编辑时,`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:
方法来处理编辑事件。