我有一个显示你的朋友的tableview,我正在使这个表可编辑。您可以通过点击最后一行添加朋友,其中显示“ADD FRIEND”。如果要删除朋友,可以点击导航栏上的编辑,然后删除所需的行。问题是:您还可以删除显示“ADD FRIEND”的最后一行。如何使最后一行无法取消?我不想在最后一个单元格(红色圆圈)上显示“可删除”动画。
代码非常基本,见下文。
的.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
FriendsListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"friendID" forIndexPath:indexPath];
// Configure the cell...
NSInteger totalRow = [tableView numberOfRowsInSection:indexPath.section]; //first get total rows in that section by current indexPath.
if(indexPath.row == totalRow -1){
//this is the last row in section.
AddFriendIndexRow = totalRow-1;
cell.friendName.text = @"+ ADD FRIEND";
} else {
cell.friendName.text = friendsList[indexPath.row];
}
return cell;
}
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[friendsList removeObjectAtIndex:indexPath.row];
NSLog(@"friendslist: %@", friendsList);
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
答案 0 :(得分:4)
您将要使用canEditRowAtIndexPath
数据源方法并执行以下操作:
- (BOOL)tableView:(UITableView * _Nonnull)tableView canEditRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath {
if (indexPath == //Last index path)
return NO
else return YES
}
您为tableView中的最后一个indexPath返回NO,为所有其他index返回YES。除了最后一行之外,这将使所有行都可编辑。可在Apple网站上找到更多文档: