【问题标题】:Nested push animation, but there's no push?嵌套推送动画,但没有推送?
【发布时间】:2012-11-03 15:12:35
【问题描述】:

当我尝试执行 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>.

这是我的设置:初始视图 --> 下一个视图 (UITableView) --> 最后一个视图 (UITable)

每个单元格都会推送到另一个视图,直到最后一个视图。我没有模态转场,我有推送转场...我将推转转场从单元格链接到下一个视图,每个视图都有不同的名称...我的 selectedRowAtIndex 方法中有一个执行转场线。我曾尝试删除该方法,有人说我在两次调用 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 问题,但大多数正确答案对我不起作用...


编辑:

下一个视图可以加载,但是当我点击返回按钮时,突然多了两个视图......


更新:

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

【问题讨论】:

    标签: uitableview ios6 xcode4.5 uistoryboardsegue


    【解决方案1】:

    你肯定不需要在didSelectRowAtIndexPath 中执行segue,如果你已经像单元格-> 下一个视图那样配置它。

    但是,从那里删除呼叫对您不起作用,然后您可以尝试从视图控制器(ctrl+从视图区域拖动)到下一个视图的转场并将转场呼叫保持在didSelectRowAtIndexPath


    我总是使用以下方法之一

    方法一:

    UITableViewCell 转至Next View Controller

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

    方法二:

    Main View Controller 转至Next View Controller

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

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

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

    【讨论】:

    • 我试过了,但是 xcode 不允许我从前一个视图拖到下一个视图。它只允许从单元格到下一个视图...
    • 删除当前的 segue 并重试 - 参考这个stackoverflow.com/questions/8837944/…
    • 请张贴您的故事板截图。 Attempting to identify segue... 打印了多少次?
    • 当您单击Subject drill down 中的单元格打开Sheet drill down 时,segue 是否有效?
    • 另外,通过将 segue 从单元格配置为查看并从 didSelectRowAtIndexPath 中删除所有内容来发布您的输出
    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多