我正在尝试查看视图控制器是否在导航堆栈上,并且我在选项中丢失了。这就是我想要做的事情:
if ([((AppDelegate *)[UIApplication sharedApplication].delegate).frontViewController.navigationController.viewControllers containsObject:SGAddNewServerViewController]) {
<#statements#>
}
问题是,我如何获得对SGAddNewServerViewController
的引用,因为我需要知道objectAtIndex...
等地址? XCode给我一个错误,就是不知道它是什么,他是对的。
我是如何知道它在NavigationStack上的确切地址的任何想法without
?感谢。
答案 0 :(得分:1)
您可以迭代所有控制器并检查是否存在SGAddNewServerViewController类型的控制器
NSArray *viewControllers = ((AppDelegate *)[UIApplication sharedApplication].delegate).frontViewController.navigationController.viewControllers;
for (UIViewController *controller in viewControllers) {
if ([controller isKindOfClass:[SGAddNewServerViewController class]]) {
//todo something
}
}
答案 1 :(得分:1)
您似乎正在尝试根据其类找到视图控制器。要做到这一点,试试这个:
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
UINavigationController *nav = delegate.frontViewController.navigationController;
for (UIViewController *controller in nav.viewControllers) {
if ([controller isKindOfClass:[SGAddNewServerViewController class]]) {
SGAddNewServerViewController *sgController = (SGAddNewServerViewController *)controller;
// do stuff
}
}
请注意,将这么多方法/属性调用嵌套到一行中并不是一个好主意。它使阅读和调试变得非常困难。