Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS中找到当前viewcontroller之前的所有视图控制器?_Ios_Objective C - Fatal编程技术网

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

如何在iOS中找到当前viewcontroller之前的所有视图控制器?,ios,objective-c,Ios,Objective C,用户可以通过不同的路径访问我的应用程序中的特定视图控制器。我想知道用户访问当前视图控制器的确切路径。任何建议都将不胜感激。我在我的一个项目中遇到过类似问题,我创建了一个单例类,该类维护一组视图控制器视图控制器。每个ViewController负责从堆栈中推送和弹出自己。所以,每当我们想让用户遵循流时,我们就查询堆栈 这对我们来说很有效 我在我的一个项目中遇到了类似的问题,我创建了一个singleton类来维护ViewController的堆栈。每个ViewController负责从堆栈中推送和弹

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

任何建议都将不胜感激。

我在我的一个项目中遇到过类似问题,我创建了一个单例类,该类维护一组视图控制器视图控制器。每个ViewController负责从堆栈中推送和弹出自己。所以,每当我们想让用户遵循流时,我们就查询堆栈


这对我们来说很有效

我在我的一个项目中遇到了类似的问题,我创建了一个singleton类来维护ViewController的堆栈。每个ViewController负责从堆栈中推送和弹出自己。所以,每当我们想让用户遵循流时,我们就查询堆栈


这对我们来说很有效

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


for(int i=0;i在当前视图控制器的
viewdidearch()
中,
viewdillearch()
viewDidLoad()
方法使用以下代码。我已将其用于我的viewDidLoad()方法


对于(int i=0;i您可以通过比较来检查控制器,将所需的类替换为“XYZViewController”


您可以通过比较来检查控制器,将所需的类替换为“XYZViewController”


您可以通过这种方式使用导航堆栈,在到达某个视图控制器之前,了解该视图控制器

代码如下:

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

但是,如果要显示标签,如果用户来自某个VC,并且从其他ViewController来到VC时不显示标签,则在需要显示标签的ViewController中使用布尔值,然后将布尔值设置为“是”,同时从上一个VC推送并选中该布尔值以显示标签。

您可以使用na在到达某个视图控制器之前,以这种方式进行vigation堆栈,以了解存在哪个视图控制器

代码如下:

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


但是,如果要显示标签,如果用户来自某个VC,并且从其他ViewController来到VC时不显示标签,则在需要显示标签的ViewController中使用布尔值,然后将布尔值设置为“是”,同时从上一个VC推送并选中该布尔值以显示标签。

您可以维护一个确认Singleton类中的viewcontroller。您可以在Singleton类中维护viewcontroller堆栈。唯一的问题是:您无法跟踪它,它只是控制台的记录器。我只需要检查用户已通过的视图,如果用户已通过层次结构中的viewcontroller,则显示标签。对于t您可以添加一个全局或本地位,用于检查用户是否通过当前viewcontroller@SaadChaudhry我完全不是这样认为的,但是我认为我现在的方法也适用于给定的情况。唯一的问题是,你必须把它写在每个视图控制器中。这里可以考虑AOP。唯一的问题是:不跟踪它,它只是控制台的记录器。我只需要检查用户已通过的视图,如果用户已通过层次结构中的viewcontroller,则显示标签。为此,您可以添加一个全局或本地位,以检查用户是否已通过当前viewcontroller@SaadChaudhry确切地说,我不知道那件事我认为我现在的方法也适用于给定的情况。唯一的问题是,你必须在每个视图控制器中写入它。可能在这里考虑AOP。我正在寻找一种通用的方法,它可以在所有的情况下使用。it@MdIbrahimHassanwhat这个解决方案有错吗?你应该接受这个。@SaadChaudhry如果我有多个相同类类型的视图控制器,这个就不太好用了。所以我想一个更一般的答案会更好,就像第一个答案本身或者topWell的第三个答案一样。我正在寻找一个可以在所有情况下使用的通用方法。你呢可以在AppDelegate中设置变量,并通过it@MdIbrahimHassan这个解决方案出了什么问题?你应该接受这个。@SaadChaudhry如果我有多个相同类类型的视图控制器,这个就不太好用了。所以我想一个更一般的答案会更好,比如第一个或第三个自上而下
for (UIViewController *vc in self.navigationController.viewControllers) {
    NSLog(@"vc desc : %@", vc.description);
}