iOS开发日记1-tableview编辑
今天博主有一个tableview编辑的需求,遇到了一些困难点,在此和大家分享,能够共同进步.
tableview的编辑是通过[self.tableview setEditing: BOOL1 animotion: BOOL2];进入的,如果需要进入编辑模式,则调用方法,将BOOL1改为YES.如果要退出编辑模式,则调用方法,将BOOL1改为NO.BOOL2为是否使用动画.
如果你想将编辑这个button由文字改为图片,想通过setBackGroudImage这个方法替换文字,你会发现图片会因为无法设置frame而产生拉伸,效果不理想.解决方法:你可以自定义rightBarButtonItem,重写代理方法.下面将tableview的编辑的代码贴出来,与大家分享
- (void)viewDidLoad {
[super viewDidLoad];
//编辑按钮
self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.navigationItem.rightBarButtonItem.title = @"编辑";
self.navigationItem.rightBarButtonItem.tintColor=[UIColor blackColor];
}
#pragma mark---------tableView的编辑(删除,插入)
//点击编辑按钮
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
// Don't show the Back button while editing.
// [self.navigationItem setHidesBackButton:editing animated:YES];
if (editing) {
self.navigationItem.rightBarButtonItem.title = @"完成";
NSLog(@"abc");
}else {//点击完成按钮
self.navigationItem.rightBarButtonItem.title = @"编辑";
NSLog(@"123");
}
[_customView.tableView setEditing:editing animated:YES];
}
//2.设置定制分区(section)中的行(row)是否可以被编辑
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// if (indexPath.section==0) {
// return NO;
// }
return YES;
}
//3.设置指定的分区(section)的行(row)编辑的样式(添加,删除)
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section==1) {
return UITableViewCellEditingStyleInsert;
}
return UITableViewCellEditingStyleDelete;
}
//4.编辑完成(先操作数据源,再修改UI)
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle==UITableViewCellEditingStyleDelete) {
NSLog(@"删除");
//同步更新beginUpdates 和 endUpdates 之间修改的UI和数据
[_customView.tableView beginUpdates];
//1.删除数据
NSString *key=_allDataDic.allKeys[indexPath.section];
NSMutableArray *array=_allDataDic[key];
[array removeObjectAtIndex:indexPath.row];
//2.删除UI
//删除行
[_customView.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
if (array.count==0) {
//删除区头上的数据(删除key对应的小数组)
NSString *key=_allDataDic.allKeys[indexPath.section];
[_allDataDic removeObjectForKey:key];
//当某个分区中只剩一个cell的时候(或者小数组中只剩一个数据的时候),删除时,也要把区头删除掉
NSIndexSet *indexSet=[NSIndexSet indexSetWithIndex:indexPath.section];
[_customView.tableView deleteSections:indexSet withRowAnimation:UITableViewRowAnimationLeft];
}
[_customView.tableView endUpdates];
}else if (editingStyle==UITableViewCellEditingStyleInsert)
{
NSLog(@"插入");
//1.插入数据
NSString *key=_allDataDic.allKeys[indexPath.section];
NSMutableArray *array=_allDataDic[key];
[array insertObject:@"昌平" atIndex:indexPath.row];
//2.插入UI(cell)
// NSIndexPath *indexPath1=[NSIndexPath indexPathForRow:0 inSection:indexPath.section];//保证每次插入数据都在第一行
[_customView.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}
}
http://www.jianshu.com/p/7c3d72fd9616?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1
转载于:https://www.cnblogs.com/Twisted-Fate/p/4727766.html
iOS开发日记1-tableview编辑相关推荐
- android tableview实现多选功能,iOS开发UI篇-tableView在编辑状态下的批量操作(多选)...
先看下效果图 直接上代码 #import "MyController.h" @interface MyController () { UIButton *button; } @pr ...
- iOS开发--TableView详细解释
-.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [DataTa ...
- iOS开发日记24-详解RunLoop
今天博主有一个RunLoop的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. RunLoop是什么? 从字面上理解,Runloop指的就是运行循环,iOS中,只要程序启动, 就会创建Run ...
- iOS开发日记54-Xcode7调试神技
今天博主有一个升级Xcode7的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 1.Address Sanitizer: 再也不用担心 EXC_BAD_ACCESS EXC_BAD_ACC ...
- ios开发日记- 5 屏幕截图
-(void)fullScreenshots{ UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; UIGr ...
- ios开发日记-18上传appStore时,遇到错误,代码为ERROR ITMS-90049
上传appStore时,遇到错误,代码为ERROR ITMS-90049 解决问题方式: 1. 在xcode左下角搜索info.plist 找到第三方的info.plist文件,如友盟中腾讯Api文 ...
- iOS开发日记4-第三方登录(ShareSDK)
今天博主有一个第三方登录的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 第三方登录的方法很多,最直接的方法就是去各大开发者平台申请id之后看官方文档直接集成,当然也有偷懒的方法.类似博主 ...
- ios 开发日记 21 -自动处理键盘事件的第三方库:IQKeyboardManager
我们写界面要考虑很多用户体验问题,键盘事件的响应就是比较麻烦的一种.我们需要监听键盘事件,考虑点击背景收起键盘.考虑键盘遮挡输入框问题等等,而且每个界面都要做这么一套.这个库帮我们解决了这个事情. 这 ...
- iOS开发日记46-倒计时效果的实现
今天博主有一个倒计时效果的实现的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 首先在需要用到的地方解析总的倒计时时间,博主没有封装,各位看官可以自行封装 #pragma mark---- ...
最新文章
- 计算机应用为什么要学机械制图,机械制图为什么这么难学?
- HDU - 2871 Memory Control(线段树+区间合并)好题!
- 升级为Exchange 2007后怀念的10件事
- Apollo进阶课程㉚丨Apollo ROS背景介绍
- mysql 报错解决思考Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column
- 企业云存储采用率将在2017年飙升
- 基于IDEA的JavaWeb开发环境搭建
- 计算机word的常用功能技巧,10个Word操作神技巧,看看你会多少?
- 企业生存与发展的前提是安全
- 文件夹批量重命名001开始的方法
- Justoj 2388最短区间 贪心
- 【Godot】加载文件数据
- 点云配准5:4pcs算法在pcl上的实现
- Spring AOP 学习笔记
- 物联网发展历程,一步步从概念走向了成熟
- Python抓取糗事百科网页信息以及源码下载
- NLTK读书笔记 — 分类与标注
- javamail 可以发邮件,发附件(附件大小可以超过2M),抄送多人,抄送密件,定时发送,消除乱码[附javamail的jar包]...
- edge打开时被360首页恶意绑定
- lv双肩包尺寸对照表_这10个最火的LV双肩包,我就是不要好好背!