如何在iOS中的当前viewcontroller之前找到所有视图控制器?

时间:2016-09-29 11:32:01

标签: ios objective-c

用户可以通过不同的路径访问我的应用中的特定视图控制器。
我想知道用户到达当前视图控制器的确切路径。

任何建议都将受到高度赞赏。

4 个答案:

答案 0 :(得分:2)

我的一个项目中有类似的问题,我创建了一个单独的类,它维护着一堆ViewControllers。每个ViewController都负责从堆栈中推送和弹出自己。因此,每当我们想要用户跟随的流时,我们就会查询堆栈。

它对我们来说非常好。

答案 1 :(得分:2)

你可以通过比较它来检查你的控制器,把你想要的类而不是“XYZViewController”

for (UIViewController * aController in self.navigationController.viewControllers)
    {
        if (aController isKindOfClass:[XYZViewController class])
        {
            //You can do your work here
        }
    }

答案 2 :(得分:1)

您可以通过这种方式使用导航堆栈,以便在到达某个View控制器之前了解哪个viewController。

以下是代码:

for (UIViewController *vc in self.navigationController.viewControllers) {
    NSLog(@"vc desc : %@", vc.description);
}

但是如果你想显示一个标签,如果用户来自某个VC而不是从其他ViewController进入VC时显示标签,那么在ViewController中使用一个布尔值,你需要在其中显示标签,然后将布尔值设置为YES,同时从前一个VC推送并检查该布尔值以显示标签。

答案 3 :(得分:0)

在当前视图控制器的viewDidAppear()viewWillAppear()viewDidLoad()方法中,使用以下代码。我使用了它的viewDidLoad()方法。

 for (int i=0;i<[self.navigationController.viewControllers count];i++)
 {
     NSLog(@"%d>>>>>>>>>%@",[self.navigationController.viewControllers objectAtIndex:i]);
 }