如何以编程方式在UITableViewCell上启用编辑模式?

时间:2013-12-31 10:17:28

标签: ios iphone objective-c ios6 ios7

我正在开发一个应用程序,它有一个PageViewController和两个视图控制器作为它的子项。其中一个子视图控制器有一个UITableView

滑动子视图控制器时出现问题。我希望有两个功能,比如应该在tableView上删除一下。   当我滑动子视图控制器时,它会将滑动发送到pageViewController。因此,当我们滑动表格视图单元格时,它不会显示删除按钮。

我希望在滑动事件中有两个功能,以便同时存在:

  1. 交换视图
  2. 在行上显示红色删除按钮

2 个答案:

答案 0 :(得分:3)

试试这个,

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //delete your data here

    }
}

答案 1 :(得分:1)

您应该将YES返回到UITableViewDataSource协议的此方法,告诉tableView您的单元格可以响应滑动以显示删除按钮:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the specified item to be editable.
    return YES;
}

然后删除此方法中的数据,当用户点击删除按钮时调用该数据:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Remove here your data
        ...
        // This line manages to delete the cell in a nice way
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}