2013-03-16 73 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