对<uinavigationcontroller:***** =“”>的不平衡调用开始/结束外观转换

时间:2017-06-19 07:14:29

标签: ios

这是我的代码:

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: *****>

问题是什么?请帮帮我。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

  • 将代码移动到新方法中,并在延迟

  • 后调用该方法

答案 1 :(得分:-1)

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

此消息被触发,因为您在上一个视图控制器的动画仍在进行之前尝试呈现视图控制器