多次推送和弹出动画NO后,NavigationBar的奇怪行为.IOS 7

Abh*_*hal 5 uinavigationbar uinavigationcontroller popviewcontroller pushviewcontroller ios

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

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

要了解问题,请考虑以下视图树.
(我在我的应用程序中使用UITableViewController)
右键单击并在新选项卡中选择打开图像以查看大图像. 在此输入图像描述

错误信息
右键单击并在新选项卡中选择打开图像以查看大图像. 在此输入图像描述

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

  1. 手动逐个推视并转到D视图.
    (推动:根>字母> A> B> C> D)
  2. 使用popToViewController以编程方式一次弹出多个视图,然后返回到Root视图.
    (POP:Root <Alphabets <A <B <C <D)
  3. 以编程方式推送并转到2视图.
    (推动:根>数字> 1> 2)

在上面的步骤2和3中,以编程方式使用动画NO进行弹出和推送,这使得UINavigationBar后退按钮和标题非常奇怪.

注意:上述问题仅在iOS 7中出现,并且在iOS 6中完美运行.

Abh*_*hal 3

\xe2\x98\x85\xe2\x98\x86\xe2\x98\x85\xe3\x80\x80已解决\xe3\x80\x80\xe2\x98\x85\xe2\x98\x86\xe2\x98\x85

\n\n

问题原因

\n\n
    \n
  • 在-(void)viewDidAppear:(BOOL)animated方法中进行推送或弹出操作会使导航堆栈不稳定。

  • \n
\n\n

解决方案

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

  • \n
  • 推送操作后调用方法[self.navigationController.viewlayoutSubviews]; 它列出了子视图。

  • \n
\n