<UINavigationController: *****> 开始/结束外观转换的不平衡调用

Posted

技术标签:

【中文标题】<UINavigationController: *****> 开始/结束外观转换的不平衡调用【英文标题】:Unbalanced calls to begin/end appearance transitions for <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: *****>

有什么问题?请帮帮我。

【问题讨论】:

Unbalanced calls to begin/end appearance transitions for <UINavigationController: 0xa98e050>的可能重复 【参考方案1】:

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

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

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

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

禁用模式上的动画

等到导航控制器完成动画。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

当控制器出现时我需要做动画。 转到问题 cmets 部分中的链接。如果您仍然遇到问题,请发表评论。

以上是关于<UINavigationController: *****> 开始/结束外观转换的不平衡调用的主要内容,如果未能解决你的问题,请参考以下文章

将 managedObjectContext 发送到 viewController 崩溃

如何正确关闭作为模式呈现的 UINavigationController?

ID:[...] 的 NSManagedObject 已失效

在 UINavigationController 中设置时图像不显示

UINavigationController - 何时释放推送的视图控制器等

使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?