如何在不使用BOOL变量的情况下检查是否弹出或推送ViewController?

时间:2013-05-15 10:23:46

标签: ios

如何在不使用BOOL变量的情况下检查是否弹出或推送ViewController?是否有任何内置方法可以告诉它是弹出还是推动?

3 个答案:

答案 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的属性。您可以使用viewDidAppearviewWillAppear方法拨打此电话。如果推送vc为true,如果它被弹出false

这是一个类似的答案: iOS how to detect programmatically when top view controller is popped?

编辑:(仅适用于iOS 5及更高版本)