2

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

我的问题是,当我以编程方式执行 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];
    });
}

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

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,它不会转换到等待列表视图,而只是停留在 Loading 并将错误打印到控制台。当我按下而不是返回登录屏幕时,我得到以下空白屏幕:

在此处输入图像描述

如果我再次按下它会崩溃并出现此错误: http: //pastebin.com/7mCyeQv9

导航堆栈显然有些混乱,但是我已经使用调试器对其进行了检查,它看起来非常好,一切都正常推送。我这辈子都想不通。这只是我以前使用过的标准导航控制器设置。

有任何想法吗?

4

2 回答 2

10

我终于弄清楚了问题所在。

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

于 2013-10-22T15:56:38.527 回答
3

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

苹果文档

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

于 2013-10-22T13:15:25.683 回答