iOS7 Tableview删除行最佳实践

时间:2014-01-12 09:44:55

标签: ios row tableview

enter image description here

在iPhone上有一个教科书示例,说明如何删除消息应用程序中的tableview行。 这似乎使用三个单独的视图来执行任务。

我的问题是关于是否有实现这一目标的捷径,或者您是否只创建了三个屏幕并且显而易见。

非常感谢。

5 个答案:

答案 0 :(得分:12)

从故事板中删除行非常简单。您只需在TableView数据源中继承2个方法。首先是告诉我是否可以删除一行:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

其次是从表视图中删除行:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}

答案 1 :(得分:7)

您必须实现必要的UITableViewDelegate和UITableViewDataSource方法。

首先,添加:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return YES;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{
if (editingStyle == UITableViewCellEditingStyleDelete) 
{
    [self.dataArray removeObjectAtIndex:indexPath.row];
    [tableView reloadData];
}
}

答案 2 :(得分:4)

在删除tableView中的任何行时,您应遵循以下步骤:

  1. 获取要删除的行的indexPath

  2. 从tableView DataSource的数据模型中删除行。

  3. [yourDataModel removeObjectAtIndex:indexPath.row];

    1. 通过重新加载tableView来更新屏幕。
    2. [tableView reloadData];

      如果需要更多信息,请告诉我。

答案 3 :(得分:3)

我不确定你对三种不同观点的意思,但这是一个例子的解决方案,可以从UITableView中删除一行:

http://www.appcoda.com/model-view-controller-delete-table-row-from-uitableview/

答案 4 :(得分:2)

以下是如何在Swift(4)中执行此操作:

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if(editingStyle == UITableViewCellEditingStyle.delete){
        dataArray.remove(at: indexPath.row)
        tableView.reloadData()
    }
}