继续我上一章使用的代码
1.UITableView添加、删除
UITableView编辑步骤
- 让TableView处于编辑状态
- 协议设定
1.确定Cell是否处于编辑状态
2.设定Cell的编辑样式(删除、添加)
3.编辑状态进行提交
// 1.让Tableview处于编辑状态
- (void)setEditing:(BOOL)editing {
// 让父类也进入编辑状态
[super setEditing:editing];
// 根据viewcontroller的状态,决定tableView是否进入编辑状态
[self.tableView setEditing:editing];
}
// 2.确定Cell是否处于编辑状态
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// 默认全部行都可编辑
return YES;
}
// 3.设定Cell的编辑样式(删除、添加)
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;// 返回删除样式
//return UITableViewCellEditingStyleInsert;// 返回添加样式
}
// 4.编辑状态进行提交
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView beginUpdates];// 表视图开始更新
// 判断是删除还是添加
if (editingStyle == UITableViewCellEditingStyleDelete) {
// 将该位置下的单元格删除
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
// 如果有数据数组,则删除与该单元绑定的数据
// [dateArray removeObjectAtIndex:indexPath.row];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// 构建一个位置信息
NSIndexPath *index = [NSIndexPath indexPathForItem:0 inSection:0];
// 向tableView中插入单元格
[tableView insertRowsAtIndexPaths:@[index] withRowAnimation:UITableViewRowAnimationFade];
// 向数组中添加数据
// [dateArray insertObject: atIndex:index.row];
}
[tableView endUpdates];
}
2.UITableView移动
- 实现协议:告诉tableView是否能够移动
- 移动
// 确定Cell是否处于可移动状态
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
// 移动
/**
移动无非在要移动的位置删除数据,在移动到的位置添加数据
*/
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {
//先记录原有位置下的模型数据
//Student *student = _dataArray[sourceIndexPath.row];
//删除原位置下的模型数据
//[_dataArray removeObjectAtIndex:sourceIndexPath.row];
//在新位置将记录的模型数据添加到数据数组中
//[_dataArray insertObject:student atIndex:destinationIndexPath.row];
}