一. 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的子类使用.