【发布时间】:2011-10-03 15:25:01
【问题描述】:
我有一个 UITabBarController,其中一个选项卡是 UINavigationController。我有一个搜索栏,可以转到 UINavigationController 中的某个视图。问题是,如果第一个视图不是由 UINavigationController 推送的,那么它会崩溃,因为我的搜索无法从这个调用中识别 visibleViewController:
UINavigationController *navController = [self.MainTab.viewControllers objectAtIndex:1];
FirstViewController *fVC = [navController visibleViewController];
我不明白的是,在这段代码之前,我是这样做的:
self.MainTab.selectedIndex = 1;
这段代码会自行选择该选项卡中的 viewController,然后根据我的知识加载视图。那么这对于 [navController visibleViewController] 获取当前的 viewController 还不够吗?谢谢。
【问题讨论】:
-
[navController visibleViewController]返回什么?什么是崩溃消息? -
@sergio 我将无法识别的选择器发送到实例以获取崩溃消息?如何检查 visibleViewController 返回的内容,因为如果它崩溃,我的 FirstViewController 没有正确的信息?
-
看来
navController不是UINavigationController,这就是为什么调用visibleViewController失败的原因...您确定要从self.MainTab.viewControllers获取它的索引吗?跨度> -
@sergio 是的,我检查了索引。如果我省略了我在该块中的搜索代码,而只使用 self.MainTab.selectedIndex = 1,那么我会得到 UINavigationController,viewDidLoad 中的第一个视图被推送到堆栈上。另外,只要我先选择那个选项卡,然后回到主页选项卡,这段代码就会运行,搜索会选择正确的项目。
-
@sergio 我刚试过这个: if ([navController isKindOfClass:[UINavigationController class]]) ,它确实返回 true。
标签: iphone uiviewcontroller uinavigationcontroller uitabbarcontroller