1

我确实有一个可以编辑的 UITableViewController。我的 Storyboard 中确实有 2 个 Segue,来自 tableView 到 EditViewController(通过模式),​​第二个通过 Push 到 DetailViewController。

我希望,当 tableview isEditing 时,执行到 editviewcontroller 的 segue,而不是在编辑时,而不是到 DetailViewController。

我尝试了不同的方法,使用 prepareforsegue 方法。然后使用 didselectrowatindexpath 方法进行了几次尝试,我现在所处的位置。

现在,当 tableView 正在编辑并且我触摸一个单元格时,detailviewcontroller 会推送,并且在此之上,editviewcontroller 作为模态视图控制器进入。

这是我的代码。你能给我一些提示吗:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"didSelectRowAtIndexPath %i", indexPath.row);
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
if (tableView.isEditing == FALSE) {
    NSLog(@"isediting");
    [self performSegueWithIdentifier:@"showDetail" sender:cell];
} else {
    [self performSegueWithIdentifier:@"showEditPerson" sender:cell];
}
}

这是我尝试过的准备 segue 方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    NSDictionary *theChild = [myAppDelegate.myPersonsArray objectAtIndex:indexPath.row];
    [[segue destinationViewController] setDetailItem:theChild];
}
if ([[segue identifier] isEqualToString:@"showEditPerson"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    NSDictionary *theChild = [myAppDelegate.myPersonsArray objectAtIndex:indexPath.row];
    [[segue destinationViewController] setDetailItem:theChild];
}
}
4

1 回答 1

0

从我上面的评论:

除了委托方法之外,您似乎还将原型单元连接到一个 segue。修复 segue 连接,您应该已准备就绪。

于 2013-11-04T16:55:34.510 回答