【发布时间】:2011-11-02 01:35:49
【问题描述】:
我在故事板中有一个导航控制器,目前有两个屏幕。 Screen1 包含一个打开徽标和一些按钮,我使用以下方法隐藏了顶部的导航栏:
[[self navigationController] setNavigationBarHidden:YES];
在viewDidLoad 和viewWillAppear: 中(在viewWillAppear 中我设置了动画:YES,所以当从其他屏幕返回时它会滑落)。
当我进入 Screen2 时,我有:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
在第一个视图控制器的viewWillDisappear 中,当该视图到达导航堆栈的顶部时,导航栏会很好地滑入。
问题是,当我点击返回时,导航栏的动画离开屏幕右侧,但 Screen2 停留在那里,显示下方的另一个导航栏!
然后我可以再次点击返回,它将关闭 Screen2,主屏幕将返回,但这显然不是我想传递给任何用户的行为!
以前有人遇到过这个问题,或者对可能的罪魁祸首有什么看法?
编辑:我刚刚发现运行 iOS 模拟器时出现错误:
2011-11-02 19:29:13.548 TestHTML5[10261:f803] Unbalanced calls to begin/end appearance transitions for <LessonViewController: 0x6c5e960>.
当我单击按钮转到第二个视图 (LessonViewController) 时会发生这种情况。 希望这可能是破解这个问题的方法,有人知道吗?
【问题讨论】:
-
我在我的应用程序中调用动画 uinavigaitionbars。你试过只使用 viewWillAppear 吗?您的代码是正确的,但我的预感(为什么我不作为答案发布)是,当您调用它两次时,它实际上会生成 2 个导航栏!所以删除viewDidLoad中的那个,重新运行。
-
@CodaFi 就像你说的那样,刚刚尝试过,但并没有什么不同。然而,这确实意味着当应用程序最初加载时,导航栏出现在屏幕上,然后立即滑回。在第一次加载时,我的目标不是很明显我回来时的主屏幕。感谢您的回复:)
-
好的,试试这个:在我的应用程序中,我在任何其他控制器中都没有导航栏动画,但是让它消失的那个(即,控制器 A 什么都不做,控制器 B 制作动画发生)所以在你的控制器 B 中,把它放在 viewWillAppear: [self.navigationController setNavigationBarHidden:YES animated:YES];这在 viewWillDisappear: [self.navigationController setNavigationBarHidden:NO animated:animated];
-
好的,试一试,但不幸的是,这对情况没有任何影响。当我点击每个新视图并且仍然需要点击两次时,我仍然会得到
2011-11-02 19:29:13.548 TestHTML5[10261:f803] Unbalanced calls to begin/end appearance transitions for <LessonViewController: 0x6c5e960>.:/ -
好的,现在将它们重新添加进来,一次一个。首先在第二个视图控制器的 viewWillAppear 中添加隐藏它的那个。尝试推动,退出。如果成功,则在 viewWillDisappear 方法中添加显示方法。
标签: iphone ios uinavigationcontroller navigation uinavigationbar