面消失或出現(xiàn)時,判斷是pop還是push操作

Objective-C頁面消失或出現(xiàn)時,判斷是pop還是push操作

當(dāng)前的controller消失的時候回先后執(zhí)行

- (void)viewWillDisappear:(BOOL)animated;

-(void)viewDidDisappear:(BOOL)animated;


這兩個方法;在這兩個方法中進(jìn)行判斷消失的方式即可:

- (void)viewWillDisappear:(BOOL)animated {

NSArray *viewControllers = self.navigationController.viewControllers;//獲取當(dāng)前的視圖控制其

if (viewControllers.count > 1 && [viewControllers objectAtIndex:viewControllers.count-2] == self) {

//當(dāng)前視圖控制器在棧中,故為push操作

NSLog(@"push");

} else if ([viewControllers indexOfObject:self] == NSNotFound) {

//當(dāng)前視圖控制器不在棧中,故為pop操作

NSLog(@"pop");

}

}

頁面出現(xiàn)時會先后執(zhí)行:

-(void)viewWillAppear:(BOOL)animated

-(void)viewDidAppear:(BOOL)animated

這兩個方法;

如果是push出來的頁面則還會執(zhí)行:

- (void)viewDidLoad

所以可在viewdidload里加個 isPush = YES布爾值,然后在Appear中根據(jù)isPush判斷是push還是pop:

-(void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated];

if (_isPush) {

//push

}else{

//pop

}


}


別忘了頁面消失時置isPush為NO:

- (void)viewWillDisappear:(BOOL)animated

{

[super viewWillDisappear:animated];

_isPush = NO;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容