我有两个视图控制器,让我们调用它们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];
}
答案 0 :(得分:1)
您应该熟悉Model-View-Controller架构模式,因为这是用户交互式应用程序中最常用的模式。您有自己的故事板中的视图,控制器(UIViewController
子类),您可能缺少的是模型 - 这是一个存储和管理数据的类 - 你的情况这是你的购物车。
我建议您创建一个ShoppingCart类并将其实现为singleton,这样任何一个视图控制器都可以轻松地获取对它的引用。
至于从第二个视频控制器返回第一个视图控制器,您可以使用展开segue - 请参阅this question的第二个答案,而不是接受的答案。
您的问题中的代码正在尝试呈现视图控制器1的新实例 - 如果它有效,则会在您的应用程序使用时产生更深入和更深层次的视图系列。 / p>
答案 1 :(得分:0)
根据您的代码代码,您在pushViewController:animated:
的{{1}}上致电self
。但-(IBAction)addToCart:(id)sender
是pushViewController:animated:
而不是UINavigationController
的方法。所以你应该改变你的功能如下。
UIViewController