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