嵌套推送动画,但没有推动?

时间:2012-11-15 01:47:07

标签: uitableview ios6 xcode4.5 uistoryboardsegue

当我尝试预先形成一个segue时,我收到了这个错误...

2012-11-14 20:24:54.133 MyApp[26266:c07] nested push animation can result in corrupted navigation bar
2012-11-14 20:24:54.486 MyApp[26266:c07] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
2012-11-14 20:24:54.487 MyApp[26266:c07] Unbalanced calls to begin/end appearance transitions for <SheetDrillDownViewController: 0xa1bb980>.

以下是我的设置:初始视图 - &gt;下一个视图(UITableView) - &gt;最后一个视图(UITable)

每个单元格都会推送到另一个视图,直到最后一个视图。我没有模态segue,我有推送segue ...我有从单元格链接到下一个视图的推送segue,每个都有不同的名称...我在selectedRowAtIndex方法中有一个执行segue行。我已经尝试删除该方法,人们说我双重调用segue,但单击时单元格变为蓝色,并且不会推到任何地方......如何修复此错误?感谢。

这是我的代码:

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath) {
    [self performSegueWithIdentifier:@"subjectDrillDown" sender:nil];
    }
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"Attempting to identify segue...");
    // Make sure we're referring to the correct segue
    if ([[segue identifier] isEqualToString:@"subjectDrillDown"]) {

        NSLog(@"Segue has been identified...");
        // Get reference to the destination view controller
        SubjectDrillDownViewController *vc = [segue destinationViewController];
        NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row]; 
        NSMutableDictionary *object = [tableDataSource objectAtIndex:selectedIndex];
        NSString *key = [object valueForKey:@"key"];
        [vc setSelectedItem:key];

        NSLog(@"Switching to %@ detail view...",key);
        NSLog(@"Passing dictionary to %@ view... (Source below)\n\n %@",key,[NSString stringWithFormat:@"%@", [tableDataSource objectAtIndex:selectedIndex]]);
        [vc setDetailDataSourceDict:[tableDataSource objectAtIndex:selectedIndex]];
    }
    else {
        NSLog(@"ERROR, DOUBLE CHECK SEGUE'S NAME!");
    }
}

我已经看过所有其他Stack Overflow问题,但大多数正确答案对我不起作用......


编辑:

下一个视图可以加载,但是当我点击后退按钮时,突然又有两个视图......


UPDATE:

enter image description here

我会尝试发布尝试识别segue ... NSLogs的次数,但我的编译器突然无法运行:(

1 个答案:

答案 0 :(得分:2)

如果您已将其配置为单元格,那么您肯定不需要在didSelectRowAtIndexPath中执行segue - &gt;下一个观点。

但是,从那里删除调用对你不起作用然后你可以尝试从视图控制器中的segue(ctrl +从视图区域拖动)到下一个视图并保持segue调用didSelectRowAtIndexPath


我总是使用以下方法之一

方法1:

UITableViewCell发送Next View Controller

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Nothing
}

方法2:

Main View Controller发送Next View Controller

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier:@"subjectDrillDown" sender:nil];
}

您获得的错误是因为您有segue并且在选择时手动执行segue - 因此,它导致嵌套推送动画

确保segue的名称是正确的,并且您只使用上述方法之一