编辑时显示EditViewController,在不编辑时显示DetailViewController

时间:2013-11-03 14:04:20

标签: ios uitableview uistoryboardsegue

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

当tableview isEditing时,我希望执行segue到editviewcontroller,以及何时不编辑,而不是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];
}
}

1 个答案:

答案 0 :(得分:0)

根据我上面的评论:

除了委托方法之外,您似乎还将原型单元连接到segue。修复segue连接,你应该全部设置。