天天看點

有關UIViewController函數調用與否的測試

問題:當UIViewController的view通過add的方式添加到其他controller上時,導緻viewWillAppear等這些函數不被調用

solve:當ios的版本從5.0開始之後,UIViewController的view不管是通過何種方式增加到其他的controller上,viewWillAppear、viewDidAppear等這些函數都會執行,隻有5.0以下的版本才需要做特殊處理

特殊處理如下:

隻需要在UINavigationController的根controller中實作就行

.h檔案,實作UINavigationControllerDelegate

@interface DPayGameShopViewController :

UIViewController<UINavigationControllerDelegate>

.m檔案:

- (void)viewDidLoad {

    [super

viewDidLoad];

//判斷系統版本

    if

([[DPayConfig sharedInstance] isLowIOSVersion]

&& nil ==

self.navigationController.delegate) {

self.navigationController.delegate = self;

    }

}

- (void)dealloc {

self.navigationController.delegate = nil;

dealloc];

#pragma mark - UINavigationControllerDelegate method

- (void)navigationController:(UINavigationController

*)navigationController willShowViewController:(UIViewController

*)viewController animated:(BOOL)animated {

//此處還可以調用viewController其他的類方法 

如viewDidAppear等

[viewController viewWillAppear:animated];

然後對應每個頁面隻要實作viewWillAppear這些方法即可

網絡上志同道合,我們一起學習網絡安全,一起進步,QQ群:694839022