Ios 是否有方法显示已加载的视图控制器?

Ios 是否有方法显示已加载的视图控制器?,ios,uiviewcontroller,Ios,Uiviewcontroller,我有一个有5个视图的应用程序,大部分由向下钻取组成 假设我向下钻取到第四个视图控制器。有没有一种方法可以准确地显示第二个视图控制器,而无需重新创建它并以模式显示该视图 向下钻取做了一种循环,我不想强迫用户在第一个视图上重新选择他们的选择,以将它们带入第二个视图 所以它是这样的(tvc=tableviewcontroller) UINavigationController有一个名为viewControllers的数组。这将为您提供导航堆栈中存在的UIViewControllers列表 您可以尝试以

我有一个有5个视图的应用程序,大部分由向下钻取组成

假设我向下钻取到第四个视图控制器。有没有一种方法可以准确地显示第二个视图控制器,而无需重新创建它并以模式显示该视图

向下钻取做了一种循环,我不想强迫用户在第一个视图上重新选择他们的选择,以将它们带入第二个视图

所以它是这样的(tvc=tableviewcontroller)


UINavigationController
有一个名为
viewControllers
的数组。这将为您提供导航堆栈中存在的
UIViewControllers
列表

您可以尝试以下方法:

UIViewController *yourTableViewController = [self.navigationController.viewControllers objectAtIndex:(theIndexOfYourTableViewController)];

希望这有帮助。

UINavigationController
有一个名为
viewControllers
的数组。这将为您提供导航堆栈中存在的
UIViewControllers
列表

您可以尝试以下方法:

UIViewController *yourTableViewController = [self.navigationController.viewControllers objectAtIndex:(theIndexOfYourTableViewController)];

希望这有帮助。

当tvc2已经在显示的视图控制器的“堆栈”中时,您不能再次显示它


如果将视图控制器推送到导航控制器的堆栈上,则可以通过指定其
viewControllers
属性或通过发送
setViewControllers:animated:
来更改该堆栈中视图控制器的顺序。如果不想让用户看到,可以隐藏其导航栏。我认为将同一视图控制器同时放在两个位置的堆栈中是不安全的。

当tvc2已经在显示的视图控制器的“堆栈”中时,您不能再次显示它


如果将视图控制器推送到导航控制器的堆栈上,则可以通过指定其
viewControllers
属性或通过发送
setViewControllers:animated:
来更改该堆栈中视图控制器的顺序。如果不想让用户看到,可以隐藏其导航栏。我认为将同一个视图控制器同时放在两个位置的堆栈中是不安全的。

您可以在可见的视图控制器上进行迭代,并使用
is
casting操作符检查它是否是那种类型的类。然后找到视图控制器并弹出到它

目标-C

for (id viewController in self.navigationController.viewControllers) {
    if ([viewController isKindOfClass:[ViewControllerClass class]]) {
        [self.navigationController popToViewController:viewController animated:TRUE];
    }
}
Swift 2.0

for viewController in self.navigationController!.viewControllers {
    if viewController is ViewControllerClass {             
        self.navigationController?.popToViewController(viewController, animated: true)
    }
}

您可以迭代可见的ViewController,并使用
is
casting操作符检查它是否为该类类型。然后找到视图控制器并弹出到它

目标-C

for (id viewController in self.navigationController.viewControllers) {
    if ([viewController isKindOfClass:[ViewControllerClass class]]) {
        [self.navigationController popToViewController:viewController animated:TRUE];
    }
}
Swift 2.0

for viewController in self.navigationController!.viewControllers {
    if viewController is ViewControllerClass {             
        self.navigationController?.popToViewController(viewController, animated: true)
    }
}

您不能使用UINavigationController有什么技术原因吗?这听起来很像你在这里想要的。这听起来像是tvc2实现方式中的一个潜在缺陷——它不能记住用户输入的状态并采取行动吗?换句话说,缓存用户的选择状态,tvc2的显示反映该选择状态?是否有技术原因不能使用UINavigationController?这听起来很像你在这里想要的。这听起来像是tvc2实现方式中的一个潜在缺陷——它不能记住用户输入的状态并采取行动吗?换句话说,缓存用户的选择状态,tvc2的显示反映了该选择状态?yourTableViewController的属性是否与tvc2时相同?例如,我仅为tvc2更改了tableview单元格颜色,该颜色是否仍然存在?刚去上班,很久以后才能测试“yourTableViewController”是否具有与tvc2时相同的属性?例如,我仅为tvc2更改了tableview单元格颜色,该颜色是否仍然存在?刚去上班,过了很长时间我才开始用obj编码-c@lizzy81I刚刚更新了Obj-C和Obj中Swiftim编码的答案-c@lizzy81I刚刚更新了Obj-C和Swift的答案