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

Iphone 编辑时,`UITableView`不调用didSelectRowAtIndexPath??,iphone,uitableview,Iphone,Uitableview,我有一个UITableViewController,用户可以在其中编辑项目。为了启用编辑,我使用以下方法: self.navigationItem.rightBarButtonItem = self.editButtonItem; 对于不知道self.editButtonItem来自何处的所有人,它是由SDK预定义的 所以,现在当我按下任何一项时,这个方法被调用: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPat

我有一个
UITableViewController
,用户可以在其中编辑项目。为了启用编辑,我使用以下方法:

self.navigationItem.rightBarButtonItem = self.editButtonItem;
对于不知道self.editButtonItem来自何处的所有人,它是由SDK预定义的

所以,现在当我按下任何一项时,这个方法被调用:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
但是,当我点击编辑按钮并且编辑处于活动状态时,这个方法似乎没有被调用

知道我错过了什么吗

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

// 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的AllowSelectionDuringEdit属性设置为true


参考资料:

点击编辑按钮时,是否设置了
self.editing=YES

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

tableView:commitEditingStyle:forRowAtIndexPath:.
但是,当我点击编辑按钮并且编辑处于活动状态时,这个方法似乎没有被调用

知道我错过了什么吗

对。当点击导航栏中的按钮时,您希望调用
tableView:didSelectRowAtIndexPath:
。这永远不会发生。该方法仅在选定行时调用

点击编辑按钮时,您将希望将表格置于编辑模式。在视图控制器中:

- (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:committeditingstyle:forRowAtIndexPath:
方法来处理编辑事件。

我用另一种方法解决了这个问题。我的编辑按钮在我自己的导航栏上,这就是它没有被调用的原因。在导航控制器中嵌入VC,并在导航项中添加新的编辑按钮后,编辑按钮开始被调用。

简短回答(Swift lang):

@IBOutlet private weak var tableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.allowsSelectionDuringEditing = true // Magic happens here
}

我不确定你的说法是否属实,当你真的删除或编辑单元格时,承诺就会被取消…阅读我的答案,这是在编辑时获得didSelectRow回电的方法我,你当然是完全正确的!我没注意:/对不起。他问为什么他编辑时不调用isnot didSelectRow,他不希望在点击时调用edit@Daniel如果你仔细看的话,你会发现我回答了这个问题。这正是我所缺少的,谢谢你的回答_superTableView.AllowSelectionDuringEdit=true;和_superTableView.AllowSelection=true;谢谢四年后,你仍然在拯救生命!即使在10年后@thomax。