如何使最后一行无法取消

时间:2015-09-17 23:12:04

标签: ios uitableview

我有一个显示你的朋友的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
    }   
}

1 个答案:

答案 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网站上找到更多文档:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDataSource_Protocol/#//apple_ref/occ/intfm/UITableViewDataSource/tableView:canEditRowAtIndexPath: