代码之家  ›  专栏  ›  技术社区  ›  Rom.

嵌套的推送动画可能导致导航栏损坏多次警告

  •  2
  • Rom.  · 技术社区  · 14 年前

    我是ios应用程序开发的新手,遇到了一些多个警告的问题。

    我有一个导航控制器,可以加载表视图。 从这个表格视图中,只要触摸一个单元格,就会推送一个新的VC(基本上是单元格的细节)。 在“detailView”上,当按下某个按钮时,就会按下另一个VC。

    我用以下代码推送最后一个VC:

    - (IBAction)toMoreDetail:(id)sender 
    {
        [self performSegueWithIdentifier:@"toMoreDetail" sender:self];
    }
    

    当我这样做的时候,会弹出两个警告:

    2012-08-05 02:25:41.842 appName[2145:f803] nested push animation can result in corrupted navigation bar
    2012-08-05 02:25:42.197 appName[2145:f803] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
    

    到目前为止,我还没有找到任何好的答案。 也许有人能帮我解决这个问题。

    谢谢:)

    编辑:这是另一段的代码:

    从TableList到细节的VC(segue从原型单元格开始,转到细节VC):

    - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if ([[segue identifier] isEqualToString:@"toDetailEvent"])
        {
            NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row];
            DetailEvent* detailEvent = [segue destinationViewController];
            detailEvent.eventToDisplay = [listEvents objectAtIndex:selectedIndex];
        }
    } 
    
    2 回复  |  直到 14 年前
        1
  •  17
  •   danqing    14 年前

    我的猜测是你的按钮与segue链接,所以当你添加 IBAction 在上面,你触发了两次segue。

    如果你去你的故事板并点击片段,你应该能够看到它的起源和目的地。它的原点是整个视图控制器还是仅仅是按钮?您只需要手动 performSegue 如果原点是整个视图控制器。你能试着评论一下你的 [self performSegueWithIdentifier:@"toMoreDetail" sender:self]; 看看它是否有效?

        2
  •  1
  •   Rob Aldcorn    13 年前

    看起来,如果你使用故事板,将你的segue从源vc连接到目标vc,并使用didSelectRow调用segue,你就不能为segue选择留下else语句: 这样可以:

    if ((indexPath.row == 0 && indexPath.section == 0)) {
        [self performSegueWithIdentifier:@"simpleLines" sender:self];
    }
    if ((indexPath.row == 0 && indexPath.section == 5)) {
        [self openAppStore];
    }
    if (indexPath.section == 4)  {
        [self performSegueWithIdentifier:@"pushSettingsVC" sender:self];
    }
    

    这不起作用:

    if ((indexPath.row == 0 && indexPath.section == 0)) {
        [self performSegueWithIdentifier:@"simpleLines" sender:self];
    }
    if ((indexPath.row == 0 && indexPath.section == 5)) {
        [self openAppStore];
    }
    else  {
        [self performSegueWithIdentifier:@"pushSettingsVC" sender:self];
    }
    

    当使用导航控制器时,你会得到一个奇怪的双推。每当我开始一个项目时,我都会这样做,但总是忘记为什么会发生这种事。下次我