【发布时间】:2014-07-17 00:10:56
【问题描述】:
我在 Storboard 编辑器中有一个带有 4 个选项卡的 TabBarController。当我选择第 4 个选项卡时,我想向其视图控制器发送一个字符串。在我的 TabbarController 类(名为 TabBarVC)中,我实现了以下方法:
- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController {
NSUInteger indexOfTab = [theTabBarController.viewControllers indexOfObject:viewController];
if(indexOfTab == 3) {
SupplierListVC *slvc = (SupplierListVC *) viewController;
slvc.locationType = @"favorite";
self.tabBarController.selectedViewController = slvc;
}
}
这个方法被调用得很好,但是字符串没有被传递。调试的时候发现上面这段代码是在SupplierListVC的viewDidLoad之后调用的。我在这里做错了什么?选择选项卡时如何传递字符串?
【问题讨论】:
-
您是否在代码中的其他任何地方实例化
SupplierListVC? -
不,我没有实例化它。但是,正如我提到的,它连接到故事板中的 TabbarController,因此它会在 didSelectViewController 之前显示。
-
忽略之前的评论。你检查过你的演员是否真的在工作吗?在演员阵容之后尝试
NSLog("%s", NSStringFromClass(slvc.class)");并发布结果。 -
他的所作所为并没有错。变量设置正确。他没有在正确的时间检查它。
viewDidLoad将始终在标签栏中的 vc 上调用,在此方法之前,每个人都有机会触发,只要该 vc 保留在标签栏中,它的viewDidLoad将永远不会被再次调用。 -
@nhgrif - 你是对的。答案也很好。
标签: ios storyboard uitabbarcontroller