我很难找到解决这个问题的好方法.在视图控制器的-viewWillDisappear:方法中,我需要找到一种方法来确定是否因为视图控制器被推到导航控制器的堆栈上,或者是否因为视图控制器因弹出而消失.
目前我正在设置标志,isShowingChildViewController但它变得相当复杂.我认为我可以检测它的唯一方法是在-dealloc方法中.
我需要知道我的视图控制器何时会从导航堆栈中弹出,以便我可以执行操作.
我不能使用-viewWillDisappear,因为当视图控制器因任何原因移出屏幕时会被调用(比如新的视图控制器被推到顶部).
我特别需要知道控制器何时即将弹出.
任何想法都会很棒,提前谢谢.
我想,当用户按下我的后退按钮进行操作UINavigationController时,在一定的到来UIViewController.
不幸的是,看起来UINavigationControllerDelegate没有任何方法可以获得有关视图弹出的通知.
作为一种解决方法,我现在在viewDidDisappear方法中有我的动作,只有当animated它被触发时YES.这有效,但有点难看.
我该怎么做呢?
在诉诸自定义标志之前,我想与你们核实一下。
是否有一种内置方法可以确定UIViewController 是否“新推送”到 UINavigationController 的堆栈上,或者导航控制器是否弹出了另一个视图,从而显示了这个视图viewWillAppear:?viewWillDisappear:我想在视图第一次出现时执行一些一次性代码。因为self.bounds需要设置属性,所以viewDidLoad:方法不对的地方。
我希望得到一些结果,我用它来确定类似的东西viewWillDisappear:,但在第一个viewWillAppear:索引已经设置为1:
[self.navigationController.viewControllers indexOfObject:self]
Run Code Online (Sandbox Code Playgroud)
所以这是一个无用的片段。有任何想法吗?
objective-c uiviewcontroller uinavigationcontroller viewwillappear
所以问题是当有人触摸UINavigationControler上的后退按钮时,我想运行一些代码来更新数据源.
问题是我似乎无法找到合适的代表去做.只有这些在导航控制器委托上可用,我想要'didfinishshowing'类型方法.
– navigationController:willShowViewController:animated: optional method
– navigationController:didShowViewController:animated: optional method
Run Code Online (Sandbox Code Playgroud)
我认为下一个最好的地方是导航栏,但是当我尝试那个时.
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法在由控制器管理的UINavigationBar上手动设置委托
这是有意义的回顾,因为你不希望一些黑客搞乱导航控制器的内部并阻止它工作.
这一定是一个常见的问题,我错过了一些简单的事情.