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

问题描述:

我确实有一个可以编辑的UITableViewController。 我的故事板中有2个Segges,来自tableView到EditViewController(通过模式),​​第二个通过Push到DetailViewController。编辑时显示EditViewController,不编辑时显示DetailViewController

我希望当tableview isEditing时,执行editviewcontroller的segue,并且在没有编辑的情况下执行DetailViewController。

我尝试了不同的方式,用prepareforsegue方法。然后用didselectrowatindexdex方法尝试几次,我现在站在这里。

现在,当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]; 
} 
} 
+0

是否有可能您仍然将Segue连接到Storyboard文件中的原型单元格?尝试在prepareForSegue中放置断点以查看它从哪里触发。 –

+0

嗨马特。非常感谢。你是对的。我将TableViewCell连接到DetailViewController,而不是RootViewView连接到DetailViewController。再次感谢!你的拉斐尔 – Raphael

从上面我的评论:

看来你有原型单元除了委托方法外还连接了一个segue。修复segue连接,你应该全部设置。