iOS - 将数据传递给另一个视图控制器

时间:2014-05-04 08:14:58

标签: ios segue

我有两个视图控制器,让我们调用它们firstViewController和secondViewController。它们在storyboard中使用segue从firstViewController链接到secondViewController。故事板segue属性是:

identifier:showSecondViewController
style:moda

firstViewController包含产品项的collectionViews和显示购物车中商品总数的标签。单击collectionView项时,它将打开secondViewController。在secondViewController上,我点击添加按钮将项目添加到购物车。当发生这种情况时,我想在firstViewController中更新显示购物车中商品总数的标签。

我该怎么做?我应该在secondVieController和firstViewController之间创建另一个segue吗?

我尝试了以下操作,但收到错误:No visible @interface for "secondViewController declares the selector 'pushViewController:animated'

-(IBAction)addToCart:(id)sender
{
......
    firstViewController *fvc = [[firstViewController alloc] init];
    fvc.badge.value = _shoppingItems.count;
    [self pushViewController:fvc animated:YES];
}

2 个答案:

答案 0 :(得分:1)

您应该熟悉Model-View-Controller架构模式,因为这是用户交互式应用程序中最常用的模式。您有自己的故事板中的视图,控制器(UIViewController子类),您可能缺少的是模型 - 这是一个存储和管理数据的类 - 你的情况这是你的购物车。

我建议您创建一个ShoppingCart类并将其实现为singleton,这样任何一个视图控制器都可以轻松地获取对它的引用。

至于从第二个视频控制器返回第一个视图控制器,您可以使用展开segue - 请参阅this question的第二个答案,而不是接受的答案。

您的问题中的代码正在尝试呈现视图控制器1的实例 - 如果它有效,则会在您的应用程序使用时产生更深入和更深层次的视图系列。 / p>

答案 1 :(得分:0)

根据您的代码代码,您在pushViewController:animated:的{​​{1}}上致电self。但-(IBAction)addToCart:(id)senderpushViewController:animated:而不是UINavigationController的方法。所以你应该改变你的功能如下。

UIViewController