只有在添加第三个segue时,prepareForSegue才调用didSelectRowAtIndexPath

我有3个不同的意见。 2实施没有问题,是第三个创build时出现问题。

我有以下didSelectRowAtIndexPath方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@" ---------- did select row"); if(indexPath.section == 0){ if(indexPath.row == [self.data count]-1){ //prior to adding this, everything works [self performSegueWithIdentifier:@"MoreComments" sender:self]; }else{ [self performSegueWithIdentifier:@"FriendView" sender:friend]; } }else if(indexPath.section == 1){ if(indexPath.row == [self.data2 count]-1){ [self performSegueWithIdentifier:@"MorePosts" sender:self]; }else{ [self performSegueWithIdentifier:@"FriendView" sender:friend]; } } } 

我有以下prepareForSeque方法:

 -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if([segue.identifier isEqualToString:@"MorePosts"]){ MorePostsViewController *mfamvc = segue.destinationViewController; mfamvc.data = self.data; }else if([segue.identifier isEqualToString:@"FriendView"]){ FriendViewController *fvc = segue.destinationViewController; fvc.friend = friend; }else if([segue.identifier isEqualToString:@"MoreComments"]){ MoreCommentsViewController *mcvc = segue.destinationViewController; mcvc.data = self.data2; } } 

在控制从我的单元格拖到最后一个视图之前,我可以看到我的程序命中didselectrow然后prepareforseque。 这使得所有的视图导航工作完美。

只要我控制从我的单元格拖到MoreCommentsViewController我开始看到错误:

嵌套的推动animation可能导致导航栏损坏完成处于意外状态的导航转换。 导航栏子视图树可能会损坏。

我注意到,现在也准备好了,被称为两次,先准备好,然后再发电,然后再准备。

我有什么错,有条件地去看这些不同的意见?

您应该使用didSelectRowAtIndexPath或从单元格,但不是两个。 如果你想让你的didSelectRowAtIndexPath调用segues,这些segues 应该从单元格到下一个场景,而是从场景上方的栏中的view controller图标:

在视图控制器之间延续

你现在可以select这个新的segue,进入“属性检查器”( 选项 + 命令 +4),并提供一个故事板标识符,当你调用performSegueWithIdentifier时,你可以在代码中引用它。

原因是你不能从一个tableview单元格拖到多个视图。 正如@rdelmar提到的这是错误的。 你应该从目的地拖动到源视图,然后按照上面的方式手动处理。

也可以在这里find: 有条件的segue在UITableViewCell上点击执行