【问题标题】:Segue data from VC to TabBar to VC (iOS)将数据从 VC 到 TabBar 到 VC (iOS)
【发布时间】: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


【解决方案1】:

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

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

只需将该行更改为:

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

并删除以 StoreViewController = *svc .... 开头的行。

【讨论】:

  • 你太棒了。现在完美运行。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2016-02-26
  • 2020-03-15
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多