编辑时显示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];
}
}
答
从上面我的评论:
看来你有原型单元除了委托方法外还连接了一个segue。修复segue连接,你应该全部设置。
是否有可能您仍然将Segue连接到Storyboard文件中的原型单元格?尝试在prepareForSegue中放置断点以查看它从哪里触发。 –
嗨马特。非常感谢。你是对的。我将TableViewCell连接到DetailViewController,而不是RootViewView连接到DetailViewController。再次感谢!你的拉斐尔 – Raphael