如何在不使用BOOL变量的情况下检查是否弹出或推送ViewController?是否有任何内置方法可以告诉它是弹出还是推动?
答案 0 :(得分:2)
if (self.navigationController != nil) {
// You can POP
}
或获取所有观点。
NSArray* views = [myNavigationController viewControllers];
[views objectAtIndex:0] //will be the Root
并且可以检查当前是否为Root
if(self == [views objectAtIndex:0])
//是的,它是Root
答案 1 :(得分:2)
对于以下内容,请注意:您需要拥有toCheckController
的相同实例才能获得正确的结果
NSArray* views = [myNavigationController viewControllers];
[views containsObject: toCheckController];//will return you yes/no
这将告诉您它是否已被推送。如果返回NO,则无法判断视图是弹出还是从不被推送。
答案 2 :(得分:0)
UIViewController
有一个名为isMovingToParentViewController
的属性。您可以使用viewDidAppear
或viewWillAppear
方法拨打此电话。如果推送vc为true
,如果它被弹出false
。
这是一个类似的答案: iOS how to detect programmatically when top view controller is popped?
编辑:(仅适用于iOS 5及更高版本)