多次推送和弹出动画 NO 后导航栏的奇怪行为。 IOS 7
Posted
技术标签:
【中文标题】多次推送和弹出动画 NO 后导航栏的奇怪行为。 IOS 7【英文标题】:Strange behavior of NavigationBar after multiple push and pop with animation NO. iOS7 【发布时间】:2013-11-20 01:46:20 【问题描述】:在 UINavigationController 上以编程方式执行多个弹出和推送操作时出现问题,动画 NO。 (仅限 iOS7 iPhone)
源代码 https://github.com/abhishek9284/NavigationBarTest
要了解问题,请考虑以下视图树。(我在我的应用程序中使用 UITableViewController) 右键单击并选择在新标签中打开图片以查看大图。
错误信息 右键单击并选择在新标签中打开图片以查看大图。
执行以下导航时出现错误/问题。
-
手动逐一推送视图并转到 D 视图。
(PUSH:根>字母>A>B>C>D)
使用 popToViewController 以编程方式一次弹出多个视图并返回根视图。
(POP : Root
以编程方式推送并转到 2 视图。
(PUSH : 根 > 数字 > 1 > 2)
在上面的第 2 步和第 3 步中,使用动画 NO 以编程方式弹出和推送完成,这使得 UINavigationBar 后退按钮和标题非常奇怪。
注意:上述问题仅在 iOS 7 中出现,并且在 iOS 6 中完美运行。
【问题讨论】:
我不清楚到底是什么问题。 你能上传一张奇怪的图片吗? @nhgrif 添加了代码链接和应用程序图像以便更好地理解。 @JuJoDi 添加了代码链接和应用程序图片以便更好地理解。 【参考方案1】:★☆★ 已解决 ★☆★
问题原因
在 -(void)viewDidAppear:(BOOL)animated 方法中执行 push 或 pop 会使导航堆栈不稳定。
解决方案
为推送或弹出相关进程创建单独的方法,并从另一个视图控制器调用该方法(避免在内部推送或弹出 -(void)viewDidAppear:(BOOL)animated)
push 操作后调用方法[self.navigationController.view layoutSubviews]; 布局子视图。
【讨论】:
【参考方案2】:为了技术准确性,不应直接调用 layoutSubviews,即使它确实有效。查看 Apple 文档了解更多信息。
【讨论】:
以上是关于多次推送和弹出动画 NO 后导航栏的奇怪行为。 IOS 7的主要内容,如果未能解决你的问题,请参考以下文章
链 UIViewControllers 推送和弹出动画与 UINavigationController 关闭/呈现模式视图?