我确实有一个可以编辑的 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];
}
}