如何从导航堆栈中推送/弹出uiviewcontroller时收到警报

Ser*_*nce 8 iphone cocoa-touch uiviewcontroller uinavigationcontroller ios

我需要做一些事情时,我的视图控制器都推或从导航堆栈中弹出,但不希望使用viewillappear/viewdidappear或viewwilldisappear/viewdiddisappear因为这些盖的情况下,除了当视图控制器推/弹出.是正确的方法去使用navigationcontroller委托和navigationController:didShowViewController:animated:和navigationController:willShowViewController:animated:?如果没有,最好的办法是什么?

Ser*_*nce 7

要知道什么时候推,你可以使用

UINavigationControllerDelegate

并实施

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animated
Run Code Online (Sandbox Code Playgroud)

只要将viewcontroller推入导航堆栈,并且每当其上方的viewcontroller被弹出时,此方法就会触发,从而再次显示它.因此,您必须使用一个标志来确定它是否已经初始化,如果它没有意味着它只是被推动了.

要了解它何时被弹出,请使用以下答案:

viewWillDisappear:确定是正在弹出视图控制器还是正在显示子视图控制器


iOS*_*wan 6

您可以尝试在对象推送或从导航控制器堆栈弹出时调用的UINavigationController委托方法.

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
Run Code Online (Sandbox Code Playgroud)