-5

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

4

3 回答 3

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]) //是的,它是根

于 2013-05-15T10:28:36.870 回答
2

对于以下内容,请注意:您需要具有相同的实例toCheckController才能获得正确的结果

NSArray* views = [myNavigationController viewControllers];

[views containsObject: toCheckController];//will return you yes/no

这将告诉您它是否已被推送。如果这返回 NO,则您无法判断视图是被弹出还是从未被推送。

于 2013-05-15T10:36:30.440 回答
0

UIViewController有一个名为 的属性isMovingToParentViewController。你可以在你的viewDidAppearorviewWillAppear方法中调用它。如果 vc 被推送,它是true,如果它被弹出,它是false.

这是一个类似的答案: iOS 如何在弹出顶视图控制器时以编程方式检测?

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

于 2013-05-15T10:39:42.900 回答