0

最近変更したストーリーボード付きのプロジェクトがあります。

以前はVC->VC1->VC2であり、このコードを使用してViewController間でデータをセグエしていました

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;

「「StoreViewController*_strong」を「UIViewController*」型の式で初期化する互換性のないポインタ型」という警告が表示されます

4

1 に答える 1

2

わかりました。問題は行です。インデックス0にナビゲーションコントローラーがないため、StoreViewControllerは次のようになります。

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

その行を次のように変更するだけです。

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

そして、StoreViewController = *svc...を開始する行を削除します。

于 2013-03-16T21:43:07.337 に答える