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 文档 :
以编程方式显示视图控制器的内容…从另一个可见视图控制器显示它。 …