【发布时间】:2013-03-17 05:43:07
【问题描述】:
我最近更改了一个带有故事板的项目。
之前是 VC -> VC1 -> VC2 并使用此代码在 ViewControllers 之间分隔数据
if([segue.identified isEqualToString:@"SegueData"]){
StoreViewController *svc = [segue destinationViewController];
NSIndexPath *path = [allStoresTable indexPathForSelectedRow];
Stores *s = [stores objectAtIndex:path.row];
[svc setCurrentStores:s];
}
现在我需要从 VC -> TabBar -> VC1, VC2 传递该数据
我现在该怎么做?
我从这里尝试了与我的问题 (http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=2884) 类似的代码,但应用程序在运行时崩溃了。
UITabBarController *tabBarController = segue.destinationController;
UINavigationController *navController1 = [tabBarController.viewControllers objectAtIndex:0];
StoreViewController *svc= navController1.topViewController;
NSIndexPath *path = [allStoresTable indexPathForSelectedRow];
Stores *s = [stores objectAtIndex:path.row];
[svc setCurrentStores:s];
这行也是导致崩溃的原因
StoreViewController *svc= navController1.topViewController;
给我警告“使用 'UIViewController*' 类型的表达式初始化 'StoreViewController * _strong' 的指针类型不兼容
【问题讨论】:
-
使用 UITabBarController 的 viewControllers 属性怎么样?它包含标签栏控制器的所有子视图控制器。
-
我不明白你的意思。
-
viewControllers 属性使您可以访问标签栏中的每个 VC。您可以这样做:self.tabBarController.viewControllers[X] 来访问任何其他 VC 并在它们之间交换数据。
-
这样可以在标签栏中的每个 VC 之间传递数据,对吗?但我想做的是我有一个单独的 VC,它有数据,然后将它传递给 TabBarController。
-
如果一切都在 IB 中正确设置,这应该可以工作。你从 VC 到 TabBar 做了什么样的 segue?您应该记录 navController1 和 svc 以确保两者都不是 nil。该警告不应导致崩溃——您可以通过将 navController1.topViewController 强制转换为 StoreViewController 来使其静音。您收到崩溃消息了吗?
标签: ios uistoryboardsegue