在iPhone上有一个教科书示例,说明如何删除消息应用程序中的tableview行。 这似乎使用三个单独的视图来执行任务。
我的问题是关于是否有实现这一目标的捷径,或者您是否只创建了三个屏幕并且显而易见。
非常感谢。
答案 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中的任何行时,您应遵循以下步骤:
获取要删除的行的indexPath
。
从tableView DataSource的数据模型中删除行。
[yourDataModel removeObjectAtIndex:indexPath.row];
[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()
}
}