多次推送和弹出动画后导航栏的奇怪行为NO。 IOS 7

时间:2013-11-20 01:46:21

标签: ios uinavigationcontroller uinavigationbar pushviewcontroller popviewcontroller

在UINavigationController上以编程方式使用动画NO执行多个弹出和推送操作时出现问题。 (仅限iOS7 iPhone)

源代码 https://github.com/abhishek9284/NavigationBarTest

要了解问题,请考虑以下视图树。
(我在我的应用程序中使用UITableViewController)
右键单击并选择在新选项卡中打开图像以查看大图像。 enter image description here

错误信息
右键单击并选择在新选项卡中打开图像以查看大图像。 enter image description here

执行以下导航时出现错误/问题。

  1. 手动逐个推视并转到视图
    PUSH :Root> Alphabets> A> B> C> D)
  2. 使用popToViewController以编程方式一次弹出多个视图,然后返回根视图
    POP :Root< Alphabets< A< B< C< C< D)
  3. 以编程方式推送转到2视图
    PUSH :根>数字> 1> 2)
  4. 在上面的步骤2和3中弹出并以编程方式完成动画NO,这使得UINavigationBar后退按钮和标题非常奇怪。

    注意:上述问题仅出现在iOS 7&在iOS 6中完美运行。

2 个答案:

答案 0 :(得分:3)

★☆★已解决★☆★

问题原因

  • 中执行推送或弹出 - (void)viewDidAppear:(BOOL)动画 方法会导致导航堆不稳定。

<强>解决方案

  • 为推送或弹出相关进程创建单独的方法,并从另一个视图控制器调用该方法(避免push或pop inside - (void)viewDidAppear:(BOOL)animated)

  • 推送操作后调用方法 [self.navigationController.view layoutSubviews]; ,用于显示子视图。

答案 1 :(得分:1)

为了技术准确性,即使它确实有效,也不应直接调用 layoutSubviews 。查看Apple文档以获取更多信息。