UITableView:我可以删除多行吗?

时间:2010-06-01 11:54:37

标签: iphone objective-c uitableview

我想根据用户的选择从表格视图中删除多行。显然我不能使用didSelectRowAtIndexPath方法,因为它将被选中的每一行都被调用。我想允许用户选择多行进行删除,然后一次删除它们。可能吗?

如果是,那该怎么办呢?此外,我正在使用基于单一视图的项目,并且当用户想要从视图中删除行时,我希望在同一视图上将表视图的标题更改为“删除”。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

- (void)tableView:(UITableView *)theTableView
      didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {

[theTableView deselectRowAtIndexPath:[theTableView indexPathForSelectedRow] animated:NO];
UITableViewCell *cell = [theTableView cellForRowAtIndexPath:newIndexPath];
if (cell.accessoryType == UITableViewCellAccessoryNone) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    [selectedCellsMutableArray addObject:newIndexPath];
} else if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
    cell.accessoryType = UITableViewCellAccessoryNone;
    [selectedCellsMutableArray removeObjectIdenticalTo:newIndexPath];
}

}

当用户按删除所选按钮时 - 只需调用类似

的内容
// change your model here and then:
[yourView deleteRowsAtIndexPaths:selectedCellsMutableArray
                withRowAnimation:UITableViewRowAnimationRight];

答案 1 :(得分:0)

迟到的回复,但处理此问题的另一种方法(如果您的目标是iOS 5)是切换编辑模式并使用内置的多个单元格选择。最简单的方法是将它放在viewDidLoad ...

// add edit button to navigation bar, which auto toggles editing mode
self.navigationItem.rightBarButtonItem = self.editButtonItem;
// allows user to select multiple cells while in editing mode
self.tableView.allowsMultipleSelectionDuringEditing = YES;

See documentation for more details