2016-07-11 31 views
0

这是场景。我正在开发一个应用程序,其中有3个视图控制器(称为“child1”,“child2”,“child3”),每个视图上都有一个collectionView 。现在,它们都具有相同的功能。唯一的区别是数据来自3个不同的API。现在我创建了一个父视图控制器(称为“ParentVC”),并且所有三个viewController都继承了“ParentVC”。使用MVC共享来自3个视图控制器的UICollectionView数据iOS

现在假设我到达“child1”,API命中并且collectionView被重新加载。 现在我推“child2”,API命中和collectionView被重新加载。 类似的情况是“child3”。

现在,当我弹出“child3”时,“child2”上的API不应再次点击。 类似的情况是,当我弹出“child2”。

现在我已经设法做到了这一点,但这是问题所在。

问题:

我想使用MVC模式,我有一个单独的数据模型类,它需要从API.Now我怎么能在这种情况下使用MVC中的数据,因为数据模型需要每次在视图控制器之间切换时都会更新,因此需要重新加载操作?

+0

发表一些你以前试过的代码?这将有助于了解您的情况和问题。 –

回答

0

您有两个选项来解决问题

1试着打电话给你的API在viewWillAppear中,而不是viewDidLoad中。

2 - 如果你正在使用MVC,那么你还需要实现你叫encodeWithCoder的initWithCoder模型类两个额外的方法和获取从API响应后保存您的模型中使用下面的代码对象数组或字典NSUserDefaults的中

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:object]; [prefs setObject:myEncodedObject forKey:key]; [[NSUserDefaults standardUserDefaults] synchronize];

,并得到使用下面的代码保存的对象。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSData *myEncodedObject = [prefs objectForKey:key ]; id obj = [NSKeyedUnarchiver unarchiveObjectWithData: myEncodedObject];

+0

我只有一个模型类。 – Reckoner

+0

然后,您应该为每个API数据采用该模型的不同对象。并把上面提到的编码和解码方法放在你的模型类中。 –

+0

那就是我正在做的事情。但是我不想每次访问视图控制器时都碰到API – Reckoner

相关问题