3
回答
IOS四个特别的方法在什么时候不调用?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

在ViewController中有

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"OtherViewController-------viewWillAppear");
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"OtherViewController-------viewDidAppear");
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    NSLog(@"OtherViewController-------viewWillDisappear");
}

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    NSLog(@"OtherViewController-------viewDidDisappear");
}
我就不明白它们在什么时候不调用?我在工程中同样的代码结构,一个调用了,但是另外一个就没有调用,我研究了半天没找到什么时候不调用(都调用了),所以请问各位老师,具体的是那些情况下特殊,会不调用呢?

举报
李远超
发帖于5年前 3回/5K+阅
共有3个答案 最后回答: 4年前

tabbarcontroller切换的时候..各viewcontroller不会调用...

一般只有navigationcontroller 的push..方法, presentViewController方法..这种导致页面被展现的方法会调用

--- 共有 5 条评论 ---
Codejoke回复 @dake : 应该也调用的 5年前 回复
李远超回复 @dake : 我用的是xib方式 5年前 回复
李远超回复 @dake : 那何时才不调用呢?这么说吧!我之所以纠结这个调用不调用的问题是这样,我现在的项目需要一个循环请求,我用的是nstimer,要离开这个页面时停掉timer,而dealloc方法在timer停掉前是不会调用的,我就想到在view**disappear中调用,但是我发现它有些情况调用有些不调用,所以…… 5年前 回复
dake回复 @李远超 :tabbarcontroller的每个viewcontroller首次切换的时候会触发viewdidload方法...所以才会调用 5年前 回复
李远超你好,谢谢你的回答,我刚才测试了,tabbarcontroller的情况下也调用了! 5年前 回复

当你把UIViewController A中的View,add到另外的UIViewController B中,A的生存周期只会调用init,loadView,viewdidload,不会走appear.

当你把UIViewController A当作子UIViewController,添加到UIViewController B,A的生存周期将会走到appear

所以我猜想,你应该编码时候写的是第一种种方式,所以不会走appear

顶部