【问题标题】:Unbalanced calls to begin/end appearance transitions for <UINavigationController: *****><UINavigationController: *****> 开始/结束外观转换的不平衡调用
【发布时间】:2017-06-19 07:14:28
【问题描述】:

这是我的代码:

UINavigationController *navigaitonController = [[UINavigationController alloc] initWithRootViewController:tips];
navigaitonController.modalPresentationStyle = UIModalPresentationCustom;
navigaitonController.transitioningDelegate = tips.transiction;
navigaitonController.modalPresentationCapturesStatusBarAppearance = YES;
[controller presentViewController:navigaitonController animated:YES completion:nil];

当提示控制器出现或关闭时,控制台日志:

Unbalanced calls to begin/end appearance transitions for <UINavigationController: *****>

有什么问题?请帮帮我。

【问题讨论】:

标签: ios


【解决方案1】:

当您在当前视图控制器完成显示之前尝试显示新的视图控制器时会发生这种情况。您可以通过在 viewWillAppear 中导航来重现它。

基本上,您试图几乎同时将两个视图控制器推入堆栈。建议您在 tableview 控制器中维护一个队列,该队列维护需要显示的详细视图列表。一次将一个压入堆栈,并在退出当前详细视图时检查是否有任何排队的详细视图需要显示。

这种导航会让用户感到困惑。考虑让您的详细视图支持多个项目可能会更好。

你完全正确。每次模态打开和关闭时,viewWillAppear 和 viewDidAppear 都会触发。似乎以下是唯一的解决方案:

  • 禁用模式上的动画
  • 等到导航控制器完成动画。

  • 将代码移到新方法中,延迟后调用该方法

【讨论】:

    【解决方案2】:

    在呈现视图控制器时将动画设置为 NO。

    触发此消息是因为您试图在前一个视图控制器的动画仍在播放之前呈现视图控制器

    【讨论】:

    • 当控制器出现时我需要做动画。
    • 转到问题 cmets 部分中的链接。如果您仍然遇到问题,请发表评论。
    猜你喜欢
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多