2016-07-11 42 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

相關問題