iOS修行---TableView进阶1
来源:互联网 发布:云计算用到的技术 编辑:程序博客网 时间:2024/05/17 18:46
/*注:以下讨论框架自带,自定义的以后记录*/
一.编辑状态删除一行
1.需要编辑按钮,进入编辑状态
self.navigationItem.rightBarButtonItem = self.editButtonItem;
这里需要说明一点,这个显示在导航条上的按钮点击会改变名字,如Edit/Done(或者中文),这个title可以自己设定,另外设置vc的editing属性也会改变其title,也就说这个按钮的title和tableVIew所处的状态是关联的。
2.当点击 编辑/完成 按钮时
-(void)setEditing:(BOOL)editing animated:(BOOL)animated{ [super setEditing:editing animated:animated]; [self.navigationItem setHidesBackButton:YES]; if(editing){ [self.tableView setEditing:YES animated:YES]; }else{ [self.tableView setEditing:NO animated:YES]; [self.navigationItem setHidesBackButton:NO]; }}3.delegate返回编辑样式
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ return UITableViewCellEditingStyleDelete;}4.dataSource执行删除--编辑处理方法
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ if(editingStyle == UITableViewCellEditingStyleDelete){ [self.dataArray removeObjectAtIndex:indexPath.row]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; }}
二.滑动删除一行
1.dataSource返回允许编辑
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{ return YES;}2.实现编辑处理方法
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ if(editingStyle == UITableViewCellEditingStyleDelete){ [self.dataArray removeObjectAtIndex:indexPath.row]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; }}3.滑动手势开始与结束代理方法delegate
-(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath{ self.editing = YES; [self.navigationItem setHidesBackButton:YES];}-(void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath{ self.editing = NO; [self.navigationItem setHidesBackButton:NO];}这里说明一下,设置editing属性,是为了让滑动删除和导航条Edit按钮不冲突,并且在滑动开始可以隐藏导航条返回按钮
三.多选删除
1.设置tableView允许多行编辑
self.tableView.allowsMultipleSelectionDuringEditing =YES;2.设置cell被选择样式
cell.selectionStyle = UITableViewCellSelectionStyleDefault;如果认为系统选中状态难看,可以自定义选中状态背景图,生成一个UIView,定义好,然后赋值给cell.selectedBackaroundView;
3.用代理方法记录cell选中情况
//选中某一行-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if(self.editing){ [self.mulDeleteIndexSet addIndex:indexPath.row]; }}//取消选择中一行-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{ if(self.editing){ [self.mulDeleteIndexSet removeIndex:indexPath.row]; }}这里我们用NSMutableIndexSet对象记录选中情况,也可以用array,dic等,视具体情况而定
4.在某一方法中删除数据,并重绘tableView,如在界面中设置一个删除按钮,或者什么
[self.dataArray removeObjectsAtIndexes:self.mulDeleteIndexSet]; [self.mulDeleteIndexSet removeAllIndexes]; [self.tableView reloadData];
3 0
- iOS修行---TableView进阶1
- iOS修行---TableView进阶2之cell.accessoryType
- iOS修行---Auto Layout学习1
- 《iOS 高级编程》之Tableview进阶指南
- 《iOS 高级编程》之Tableview进阶指南
- TableView 进阶
- iOS修行---收起键盘
- iOS开发-进阶:设置group类型tableview的section间距
- iOS开发 - 第02篇 - UI进阶 - 02 - TableView
- iOS开发 - 第02篇 - UI进阶 - 03 - TableView Cell
- iOS修行---nonnull,nullable修饰
- 修行
- 修行
- 修行
- 修行
- 修行
- 修行
- ios tableview
- Java NIO系列教程(十一) Pipe
- Hbase 统计表行数的3种方式总结
- 【requirejs】基础总结
- Android消息机制1-Handler(Java层)
- android常用的工具类
- iOS修行---TableView进阶1
- fiddler
- ChucK初步(9)
- SparkSession简单介绍
- Android新闻客户端水平导航条效果
- iOS 部分页面的强制横竖屏
- redis 服務器 went away
- C#之MySql登录
- EGOCache缓存框架详细讲解