iOS 之UITableView编辑

一. UITableView编辑

UITableView编辑步骤:a.让tableView处于编辑状态 b.确定哪些cell被编辑 c.设定cell的编辑样式 d.提交编辑

以下方法均为UITableViewDataSource的协议方法

- (void)setEditing:(BOOL)editing animated:(BOOL)animated (让tableView进入编辑状态,此方法需要super使用父类的方法,并且指定当前的tableView调用)

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath (指定哪些cell能被编辑,默认全部都能被编辑)

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath (指定tableViewCell的编辑样式)

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath (确定编辑完成)

1. 添加

先修改数据源,然后执行reloadData该方法,能够刷新数据.通常只是修改数据源,reloadData方法消耗内存太大.

2. 删除

删除操作是先删除数据源中对应的数据,然后再操作UI,注意(删除后,要判断该分区是否还有元素,如果没有元素了,则将该分区删除,包含右侧索引).

3. 移动

指定哪些cell可以被移动.

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

从sourceIndexPath移动到destinationIndexPath

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

首先操作数据源获取移动前的位置,将其删除后,加入到移动后数据源位置中.

限制跨区移动方法,判断sourceIndexPath.section与proposedDestinationIndexPath.section是否一致,如果不一致,则为跨区移动.从而来限制跨区移动.

- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath


二. UITabViewController

UITableViewController是继承UIViewController的一个类.只不过UITableViewController多了一个tableView的属性.即:UITableViewController是一个自带tableView的视图控制器.

注意事项:

1. UITableViewController继承于UIViewController,自带一个tableView.

2. self.view 不是UIView的对象,而是UITableView的对象.

3. dataSource与delegate两个协议的代理人都为self.

4. 开发中只需要建立UITableViewController的子类使用.

你可能感兴趣的:(iOS 之UITableView编辑)