2013-03-16 34 views
0

我有一个最近更改了故事板的项目。将数据从VC调整到TabBar到VC(iOS)

之前,它是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传递数据之间Segue公司数据 - >的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; 

给我的警告,“不兼容的指针类型初始化 'StoreViewController * _strong' 有型 '的UIViewController *'

+0

有关使用的UITabBarController的viewControllers属性是什么?它包含标签栏控制器的所有子视图控制器。 – Florian 2013-03-16 20:09:05

+0

我不明白你的意思。 – Claud 2013-03-16 20:14:12

+0

viewControllers属性可让您访问标签栏中的每个VC。你可以这样做:self.tabBarController.viewControllers [X]来访问任何其他VC并在它们之间交换数据。 – Florian 2013-03-16 20:18:29

回答

2

确定的表达,你的问题是这条线,因为索引0处没有导航控制器,这就是你的StoreViewController所在的位置:

UINavigationController *navController1 = [tabBarController.viewControllers objectAtIndex:0]; 

只需更改该行:

StoreViewController *scv = [tabBarController.viewControllers objectAtIndex:0]; 

,并删除启动StoreViewController = * SVC ....行

+0

你真了不起。现在完美运作。非常感谢 :) – Claud 2013-03-16 21:48:30