tableView的编辑
2015-08-11 20:37
369 查看
// 创建tableView控件
// 在tableView中添加barButton
// 重写系统的编辑按钮点击方法
// 设置哪些行可以进行编辑
// 设置编辑按钮样式
// 删除数据
// 修改删除按钮标题
// 这个方法是iOS8.0之后出现的方法,可以再编辑状态下出现多个按钮
// 移动
// 在tableView中添加barButton
self.navigationItem.rightBarButtonItem = self.editButtonItem;
// 重写系统的编辑按钮点击方法
- (void)setEditing:(BOOL)editing animated:(BOOL)animated { // 重写方法前要继承 [super setEditing:editing animated:animated]; [self.tableView setEditing:editing animated:YES]; }
// 设置哪些行可以进行编辑
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { }
// 设置编辑按钮样式
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleDelete; }
// 删除数据
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // 删除数据源 [self.array removeObjectAtIndex:indexPath.row]; // [self.tableView reloadData]; // 通过tableView删除上面的cell // 第一个参数:指定删除哪个分区的行 // 第二个参数:删除的动画效果 [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft]; } }
// 修改删除按钮标题
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath { return @"我看你敢删"; }
// 这个方法是iOS8.0之后出现的方法,可以再编辑状态下出现多个按钮
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { // 按钮的点击所触发的事件,都是写在block中的 NSLog(@"测试删除"); }]; deleteAction.backgroundColor = [UIColor lightGrayColor]; UITableViewRowAction *upAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"置顶" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"测试置顶"); }]; upAction.backgroundColor = [UIColor cyanColor]; return @[deleteAction, upAction]; }
// 移动
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath { // 1.先获取到起始位置的数据 NSString *str = [self.array[sourceIndexPath.row] retain]; // 2.把起始位置的对象从数据源移除 [self.array removeObjectAtIndex:sourceIndexPath.row]; // 3.把数据插入到数组中 [self.array insertObject:str atIndex:destinationIndexPath.row]; [str release]; }
相关文章推荐
- 如何使用1M的内存排序100万个8位数
- CodeFirst建模:DataAnotation
- 32位和64位系统区别及int字节数
- java 后台线层也叫守护线层
- ImageLoader框架使用步骤
- 团体队列
- [置顶] 100 High-Quality Java Developers’ Blogs
- React Native 简介:用 JavaScript 搭建 iOS 应用 (1)
- 最好的10个移动 Web 应用程序开发框架
- 文件服务器的深度剖析(一)
- 从Vmware Workstation迁移到vsphere/esx5点滴记录
- 深入 理解 Statement 和 PreparedStatement
- JavaWeb学习总结——文件上传和下载
- crontab 启动 执行多次
- 基于消息机制的异步架构之对消息队列的处理
- 面试常见问题 死锁代码&单例模式
- 亚马逊AWS学习——为oracle类型的RDS数据库部署数据
- 第二天——hibernate讲完了
- Linux文件监控
- 360测试开发笔试题(2016内推)