`
renzhelife
  • 浏览: 669877 次
文章分类
社区版块
存档分类
最新评论

让viewDidAppear/viewWillAppear 在push/pop页面加载前始终调用

 
阅读更多

让viewDidAppear/viewWillAppear 在页面加载前始终调用

viewDidAppear/viewWillAppearin UINavigationController not be called

When you push or pop a view controller on/off a navigaction controller's stack, the usualviewWillAppear/ viewDidappear methods aren't called. If you want to ensure they're always called, just add the UINavigationControllerDelegate protocol to your root view controller:

@interface RootViewController : UIViewController <UINavigationControllerDelegate> {
UINavigationController *navController;
}

Then implement these two methods:

- (void)navigationController:(UINavigationController *)navigationController 
willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[viewController viewWillAppear:animated];
}

- (void)navigationController:(UINavigationController *)navigationController
didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[viewController viewDidAppear:animated];
}

Be sure to set the root view controller as the delegate for the nav controller. NowviewWillAppear/ viewDidAappear will be called whenever a controller is pushed/popped from the stack.

If you want to call the viewWillDisappear/viewDidDisappear methods, your view controller still has to do that manually before popping itself off the nav stack.

分享到:
评论

相关推荐

    TabBarController与NavigationController嵌套的例子

    TabBarController与... ⁃ viewWillAppear(), viewDidAppear(), viewWillDisappear(), 
viewDidDisappear()等方法不被调用的解决方法(解释在这里) Coding Style: Daniel's Objective-C Coding Style Guidelines

    FirstAppear:扩展所有视图控制器以支持一个视图[WillDid] FirstAppear仅调用一次

    首次出现扩展所有视图控制器以支持视图[Will / Did] FirstAppear仅调用一次用法只需实现viewWillFirstAppear:(BOOL)animated或viewDidFirstAppear:(BOOL)animated方法即可,每种方法都会被调用一次。 完美的地方,...

    iOS 导航栏自带页面右滑pop使用示例

    iOS7之后苹果导航控制器增加了一个左侧边缘右滑pop的手势,在非栈底的控制器里面,从左边右滑之后相当于出栈(pop)样子。 以下设置均在自定义的UINavigationController里操作 // 默认是YES 设置为NO左侧右滑手势就...

    ios-iOS 翻页控件.zip

    各个ViewController的 viewDidLoad , viewWillAppear, viewDidAppear,viewWillDisAppear, viewDidDisappear都会正确的执行(翻页到对应的ViewController时才会调用viewDidLoad, viewWillAppear,viewDidAppear....

    iOS禁用侧滑返回手势要点解析

    项目中可能某些页面返回按钮需要自定义,然后在点击返回按钮时做出某些判断,或者直接pop到根控制器,这时候需要禁用侧滑返回手势,防止它不走判断的代码直接返回上个界面。 网上找了些资料,大致方法有两种,但要...

    ViewControllerMadness:探索iOS UIViewController通知和回调方法

    这是从iOS 12开始的更改,通常在视图出现时会调用一次viewDidAppear(_:) ,而在视图消失时会调用一次viewDidDisappear(_:) 。 同样,从非全屏modalPresentationStyle或在导航控制器中向后轻扫以取消视图控制器的...

    iOS app 右滑返回操作的两种方法

    方法一:如果B页面的返回按钮要用自定义的按钮(在iOS7中,如果使用了UINavigationController,那么系统自带的附加了一个从屏幕左边缘开始滑动可以实现pop的手势。但是,如果自定义了navigationItem的...

    swift编写简单的左右菜单栏

    // 用户拖动视图调用代理方法。 func panGestureRecognized(panGestureRecognizer:UIPanGestureRecognizer){ // 用户对视图操控的状态。 var state = panGestureRecognizer.state; var location = ...

    ios-一句代码实现iOS检测更新软件.zip

    -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; //一句代码实现检测更新 [self hsUpdateApp]; } 简书详细介绍地址: http://www.jianshu.com/p/1d08c786b52f github地址: ...

    viewController 生命周期

    iOS的SDK中提供很多原生ViewController,以支持标准的用户界面,例如表视图控制器(UITableViewController)、导航控制器(UINavigationController)、标签栏控制器(UITabbarController)和iPad专有的...

    Dr.Light:iOS安全套件可避免在某些情况下崩溃(OC)

    例如,在viewDidAppear调用之前在viewDidLoad添加推入代码是很危险的。它可能导致崩溃cannot addsubView:self 。 将同一个ViewController推入一个堆栈中。 发送无法识别的选择器 安装 可可豆 吊舱“ DrLight” ...

    IOS开发笔记之禁用手势滑动返回功能的示例

    这项功能在大多数情况下方便了用户的使用,但是有时候,我们并不需要手势返回功能,比如某个页面加入了左右滑动翻页功能,用户在使用的时候很容易就返回到上一级界面了。 禁用滑动返回手势需要在改界面的...

    LifecycleHooks:将自定义代码注入视图和视图控制器以响应生命周期事件

    animated)}支持以下生命周期事件: UIViewController生命周期挂钩: viewDidLoad viewWillAppear viewDidAppear viewWillDisappear viewDidDisappear UIView生命周期挂钩: didMoveToWindow 注意:操作是在对象自己...

    iOS之单独使用UISearchBar创建搜索框的示例

    这里实现的是进入页面后直接在导航栏上显示搜索框(包含右侧取消按钮),并弹出键盘且搜索框为直接可输入状态(第一响应者),点击右侧取消按钮后收起键盘并返回上一页。 搜索页面 1.实现代理UISearchBarDelegate ...

    自定义图片 的 JXRollView

    作者augsun,源码JXRollView,... 在 JXRollView 所在页面的 viewDidAppear 和 viewWillDisappear 发送相应通知; 2. 在 AppDelegate applicationDidEnterBackground 和 applicationWillEnterForeground 发送相应通知;

    focus_detector:Android的onResumeonPause和iOS的viewDidAppearviewDidDisappear用于Flutter

    类似于Android上的onResume() / onPause()和iOS上的viewDidAppear() / viewDidDisappear() 。 每当有事情发生或使小部件聚焦时,Focus Detector都会为您触发回调。 例如,这样的事件可能是用户: 导航到另一个...

    应用引导页(滑动图片简介)

    写起来很简单,但是也有一些需要注意的小地方,刚开始想模态出来一个新的VC,但是模态必须得在前一个view生成之后,那样当前的view会闪一下,另外放到viewDidAppear里面,会不只一次调用,不满足要求,所以有些小的...

    Glimpse:UIView记录库

    Glimpse是一个简单的库,可让您从UIViews创建视频。 它通过拍摄一系列UIView的屏幕快照,然后创建一个QuickTime视频并将其保存到应用程序的文档文件夹中,来记录动画和动作的发生情况。 设置 要设置Glimpse,请将...

    iSwizzle:使用 Swizzle 模式覆盖 iOS 的方法

    此示例代码增强了 UIViewController 并将日志记录功能添加到 viewWillAppear: viewDidAppear: viewWillDisappear: 和 viewDidDisappear 方法。 但是你可以在任何需要注入功能的地方使用它。 适用于来自iOS

    iOS实现代码只执行一次

    iOS实现代码只让执行一次 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self performSelector:@selector(wangmumu:) withObject:@...

Global site tag (gtag.js) - Google Analytics