UITableView
//自定义辅助视图的内容
UISwitch *mySwitch = [[UISwitch alloc]init];
mySwitch.on = YES;
cell.accessoryView = mySwitch;
tableview : 编辑模式 : 两问一答 移动 一问一答
//开启表格的编辑模式
[self.tableView setEditing:!self.tableView.editing animated:YES];
//编辑模式的两问一答
//问1:当前行是否可以编辑
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
// if (indexPath.row==2) {
// return NO;
// }
return YES;
}
//问2:当前行的编辑样式是何种
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row == self.allContacts.count-1) {
return UITableViewCellEditingStyleInsert;
}
return UITableViewCellEditingStyleDelete;
//此处返回两种样式的或运算,则会出现批量选择的按钮
//return UITableViewCellEditingStyleDelete|UITableViewCellEditingStyleInsert;
}
//答1:提交(commit)编辑动作后,做什么
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if (editingStyle == UITableViewCellEditingStyleDelete) {
//1.先修改数据模型
//按照点击动作的行号做下标,删除数组中对应位置的数据
[self.allContacts removeObjectAtIndex:indexPath.row];
//2.更新界面
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
//[tableView reloadData];
}else{
//1.修改数据模型
Contact *newContact = [[Contact alloc]init];
newContact.name = @"test";
newContact.phoneNumber=@"12";
newContact.address = @"Beijing";
[self.allContacts addObject:newContact];
//2.刷新界面
//新添加的数据的下标就是对应的行的indexPath
//数据添加到了数组的最后位置上,所以它对应的行号就是count-1
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:self.allContacts.count-1 inSection:0];
[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationRight];
}
}
//实现行的移动的一问一答
//问1:该行是否可以移动
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
//答1:移动后做什么
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{
//1.修改数据模型
//按照原始位置把数据先取出
Contact *c = self.allContacts[sourceIndexPath.row];
//从数组中删掉原来的数据
[self.allContacts removeObjectAtIndex:sourceIndexPath.row];
//再按照新的位置把数据插入到数组中
[self.allContacts insertObject:c atIndex:destinationIndexPath.row];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"选中了%ld",indexPath.row);
}
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"勾掉了%ld",indexPath.row);
}
//设置辅助视图的样式
//cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
if (indexPath.row == 1) {
//自定义辅助视图的内容
UISwitch *mySwitch = [[UISwitch alloc]init];
mySwitch.on = YES;
cell.accessoryView = mySwitch;
}else{
cell.accessoryView = nil;
}