如何在iOS中的当前视图控制器之前查找所有视图控制器?
在当前视图控制器的viewDidAppear()
,viewWillAppear()
或viewDidLoad()
方法中使用以下代码。我用它viewDidLoad()方法。
for (int i=0;i<[self.navigationController.viewControllers count];i++)
{
NSLog(@"%d>>>>>>>>>%@",[self.navigationController.viewControllers objectAtIndex:i]);
}
唯一的问题是:你不能跟踪它,它只是一个控制台的记录器。 – prabodhprakash
我只需要检查用户浏览过的视图,并在用户已经通过层次结构中的视图控制器时显示标签。 –
为您可以添加一个全球或本地位,这将检查用户是否通过当前视图控制器来到 –
我在我的一个项目中遇到了类似的问题,我创建了一个维护一堆ViewController的单例类。每个ViewController负责从堆栈推送和弹出自己。因此,只要我们想要用户遵循流程,我们就会查询堆栈。
它对我们来说相当不错。
您可以通过比较其检查你的控制器,把你需要的类,而不是“XYZViewController”的
for (UIViewController * aController in self.navigationController.viewControllers)
{
if (aController isKindOfClass:[XYZViewController class])
{
//You can do your work here
}
}
嗯,我在寻找一种可以在所有情况下使用的一般方法。 –
你可以在AppDelegate中设置一个变量并通过它比较所需的一个类 –
@MdIbrahimHassan这个解决方案有什么问题?你应该接受这个。 –
您可以使用这种方式的导航堆栈结识之前其的viewController在那里你到达了某个View控制器。
这里是代码:
for (UIViewController *vc in self.navigationController.viewControllers) {
NSLog(@"vc desc : %@", vc.description);
}
但是,如果你想显示的标签,如果用户来自某些VC,当其他的ViewController前来VC不显示的标签,然后在ViewController中使用一个布尔值,在该布尔值中需要显示标签,然后将布尔值设置为YES,同时从前一个VC推入并检查该布尔值以显示标签。
您可以在singelton类中维护一堆ViewControllers。 –