编辑时,`UITableView`不会调用didSelectRowAtIndexPath?

我有一个UITableViewController用户应该能够编辑项目。 为了启用编辑我使用这个:

 self.navigationItem.rightBarButtonItem = self.editButtonItem; 

对于不知道self.editButtonItem来自哪里的人,它是由SDK预定义的。

所以,现在当我按任何项目,这个方法被称为:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

但只要我点击编辑button,而编辑是活跃的,这种方法似乎并没有被调用。

任何想法,我想念?

这是与编辑相关的其余代码:

 // Override to support conditional editing of the table view. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleNone; } - (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath { return NO; } 

谢谢您的帮助。

MCB

你必须将UITableView的allowedSelectionDuringEditing属性设置为true …这里是一个引用UITableView参考

当编辑button被点击时,你是否设置self.editing = YES

在编辑模式下,当您点击一行时调用此方法,而不是didSelectRow:

 tableView:commitEditingStyle:forRowAtIndexPath:. 

我以其他方式解决了这个问题。 我的编辑button是在我自己的导航栏上,这是它没有被调用的原因。 在导航控制器内embedded了VC之后,在导航条中放入了新的编辑button,编辑button开始被调用。

但只要我点击编辑button,而编辑是活跃的,这种方法似乎并没有被调用。

任何想法,我想念?

是。 你正在期待tableView:didSelectRowAtIndexPath:当你的导航栏中的button被点击时被调用。 这绝不会发生。 该方法仅在select行时调用。

点击编辑button时,您需要将表格置于编辑模式。 在你的视图控制器中:

 - (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; // must be called first according to Apple docs [self.tableView setEditing:editing animated:animated]; } 

然后通过添加一个tableView:commitEditingStyle:forRowAtIndexPath:方法来处理编辑事件。