UINavigationController’损坏的导航栏’问题

我遇到了严重的问题让我的导航控制器工作,并在本网站上尝试了几乎所有相关的问题。

我的问题是,当我以编程方式执行segue时,导航栏中似乎存在转换,但视图不会更改。 我看到以下错误:

2013-10-22 13:47:30.059 App[2236:a0b] nested push animation can result in corrupted navigation bar 2013-10-22 13:47:30.411 App[2236:a0b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted. 2013-10-22 13:47:30.501 App[2236:a0b] Unbalanced calls to begin/end appearance transitions for 

我的故事板看起来像这样:

在此处输入图像描述

在LoginViewController中,我们根据某些条件执行segue:

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear]; NSString* appState = [AppConfig getAppState]; if ([appState isEqualToString:APP_STATE_WAITING]) { [self performSegueWithIdentifier:@"Load" sender:self]; } else if ([appState isEqualToString:APP_STATE_REGISTRATION_AVAILABLE]) { [self performSegueWithIdentifier:@"SignUp" sender:self]; } } 

在LoadingViewController中,我们等待来自Web服务的响应,然后执行以下操作:

 - (void)segueToWaitingList:(NSUInteger)behind inFront:(NSUInteger)inFront { [MosaycOptions setAppState:APP_STATE_WAITING]; dispatch_async(dispatch_get_main_queue(), ^{ [self performSegueWithIdentifier:@"Waiting" sender:self]; }); } 

正是segue给了我这个问题。 导航栏转换但视图没有,我们看到打印出以下错误:

 2013-10-22 13:47:30.059 App[2236:a0b] nested push animation can result in corrupted navigation bar 2013-10-22 13:47:30.411 App[2236:a0b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted. 2013-10-22 13:47:30.501 App[2236:a0b] Unbalanced calls to begin/end appearance transitions for 

该应用程序不会崩溃,但不会发生segue,它不会转换到等待列表视图,而只是保持加载状态并将错误打印到控制台。 当我按回而不是回到登录屏幕时,我得到以下空白屏幕:

在此处输入图像描述

如果我再次按回来它会因此错误崩溃: http : //pastebin.com/7mCyeQv9

有些东西显然已经搞砸了导航堆栈,但是我已经使用调试器进行了检查,它看起来非常好,一切都按正常方式推送。 我不能为我的生活弄清楚。 这只是我之前使用的标准导航控制器设置。

有任何想法吗?

我终于弄明白了这个问题。

在LoadingViewController上调用viewDidAppear之前调用performSegueWithIdentifier。 基本上是同步错误。

你不应该在viewDidLoad中执行segue。 尝试在viewDidApperar中执行

Apple 文档 :

以编程方式显示视图控制器的内容…从另一个可见视图控制器显示它。 …