使用UINavigationViewController,如何查看视图的显示方式?
视图以直接的方式出现,作为UINavigationController堆栈中的第一个视图。或者它已经出现,因为第二个视图已经弹出,第一个视图再次显示出来。你怎么知道这些发生了哪些?
答案 0 :(得分:1)
据我所知,唯一可行的方法是继承UINavigationController并覆盖UINavigationBarDelegate methods:
– navigationBar:shouldPushItem:
– navigationBar:didPushItem:
– navigationBar:shouldPopItem:
– navigationBar:didPopItem:
当然,别忘了拨打super
。
答案 1 :(得分:1)
简单的方法是向RootViewController添加一个属性,以跟踪它是否已将另一个视图推送到navigationController。
-(BOOL)hasPushedSecondView;
在init方法中初始化为NO。
在将secondViewControllers视图推入堆栈之前,请将该属性更新为YES。
在viewWillAppear中,检查值并相应地更新视图。根据您希望应用程序的行为方式,您可能需要将hasPushedsecondview属性重置为NO。
答案 2 :(得分:0)
根据您了解差异的原因,您还可以在受影响视图的viewWillAppear / viewWillDisappear方法中操作变量。
答案 3 :(得分:0)
您可以根据应用程序的编写方式查看leftBarButtonItem或backBarButtonItem,并确定视图的显示方式。如果它在顶部,除非你有一个自定义的leftBarButtonItem,那里就没有对象。
答案 4 :(得分:0)
您可以通过UIViewController子类上的几个方法直接确定这一点。
偶尔,知道视图出现的原因或者有用 消失。例如,您可能想知道是否有视图 出现是因为它刚刚被添加到容器或是否 之所以出现,是因为其他一些模糊它的内容被删除了。这个 使用导航控制器时经常出现特定示例; 您的内容控制器的视图可能会出现,因为视图控制器 只是被推到导航堆栈或它可能会出现,因为 之前的控制器从堆栈中弹出。
UIViewController类提供了视图控制器可以使用的方法 打电话来确定出现外观变化的原因。