0

我最近更改了一个带有故事板的项目。

之前是 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;

给我警告“不兼容的指针类型初始化 '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 回答