我有3个segues到3个不同的视图。 2实现没有问题,当第三个被创建时发生问题。
我有以下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;
}
}
在控制从我的单元格拖动到最后一个视图之前,我可以看到我的程序点击了,然后准备好了。这使得所有视图导航工作都很完美。
一旦我控制从我的单元格拖动到MoreCommentsViewController,我就开始看到错误:
嵌套推送动画可能导致导航栏损坏 在意外状态下完成导航过渡。导航栏子视图树可能已损坏。
我注意到现在还准备了两次调试,首先调用prepareforseque,然后再调用,然后再次准备。
有条件地去看这些不同的观点,我做错了什么?
答案 0 :(得分:78)
您应该使用didSelectRowAtIndexPath
或来自单元格的segue,但不能同时使用两者。如果您希望didSelectRowAtIndexPath
调用segues,那些不的segue应该从单元格到下一个场景,而是从场景上方栏中的视图控制器图标开始:
您现在可以选择这个新的segue,转到“属性检查器”(选项 + 命令 + 4 ),然后提供故事板标识符,当您致电performSegueWithIdentifier
时,您可以在代码中引用该标识符。
答案 1 :(得分:4)
原因是您无法从tableview单元格拖动到多个视图。正如@rdelmar所说,这是错误的。您应该从目标拖动到源视图,然后按照我上面的方式手动处理。
也可以在这里找到:Conditional segue performed on tap on UITableViewCell