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;
}