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

标签 iphone ios cocoa-touch uiviewcontroller uinavigationcontroller

当我的 View Controller 从导航堆栈中被推送或弹出时,我需要做某些事情,但不想使用 viewillappear/viewdidappear 或 viewwilldisappear/viewdiddisappear,因为除了 View Controller 被推送/弹出时的那些封面案例.正确的方法是使用 navigationcontroller 委托(delegate)和 navigationController:didShowViewController:animated: 和 navigationController:willShowViewController:animated: 吗?如果不是,最好的方法是什么?

最佳答案

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

UINavigationControllerDelegate

并实现

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animated

每当 View Controller 被插入导航堆栈时,以及每当它顶部的 View Controller 弹出,从而再次显示它时,此方法就会触发。所以你必须使用一个标志来确定它是否已经初始化,如果还没有意味着它刚刚被推送。

要查明它何时被弹出,使用这个答案:

viewWillDisappear: Determine whether view controller is being popped or is showing a sub-view controller

关于iphone - 从导航堆栈中推送/弹出 uiviewcontroller 时如何收到警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8815886/

相关文章:

iphone - IOS UItableview reloadRowsAtIndexPaths 刷新问题

ios - 直接从standardUserDefaults获取整数的效率有多高?

从 iOS App (Swift) 请求时 PHP 没有响应

iphone - 关闭模式 UIImagePickerController 时动画效果不佳

iphone - 从 CGImage 获取 RGB 像素数据

iphone - NSOperation 中的 dealloc

ios - NSMutableArray 按标题排序

ios - 在资源文件夹的主包中找不到纹理图集文件

iphone - 如何在不将值作为子项添加到场景的情况下更新值

iphone - 如何修改普通 UITableView 中 'empty' 单元格的外观?