IOS四个特别的方法在什么时候不调用?

李远超 发布于 2013/05/30 10:54
阅读 5K+
收藏 1

在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");
}
我就不明白它们在什么时候不调用?我在工程中同样的代码结构,一个调用了,但是另外一个就没有调用,我研究了半天没找到什么时候不调用(都调用了),所以请问各位老师,具体的是那些情况下特殊,会不调用呢?

加载中
0
dake
dake

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

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

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

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

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

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

返回顶部
顶部