2016-08-12 6 views
1

私はiOS初心者です。私はJSONデータを解析しているシングルトンクラスを持っています。最後に、データを解析した後、ViewControllerに接続されているので、私はCollectionViewをリロードできません。 SingletonクラスからViewControllerクラスのCollectionViewにアクセスするには、どうすればCollectionViewをリロードすることができますか?Swift:シングルトンクラスからViewControllerにあるCollectionViewにアクセスする方法

+0

「プロトコル代理人」メソッドはどうでしたか? – Dravidian

答えて

0

解決策の1つは、データ処理が完了したときに完了クロージャを使用してコールバックを取得することです。

//Singelton 
func loadData(onCompletion completion:() ->()) { 
    //load data 

    completion() 
} 

//ViewController 
singeltonInstance.loadData { 
    //reload collectionView 
    //collectionView.reloadData() 
} 

追加情報:あなたがバックグラウンドスレッドでデータをロードしている場合は、メインスレッド上で完了クロージャを呼び出す必要があります。

//Singelton 
func loadData(onCompletion completion:() ->()) { 
    //load data 

    dispatch_async(dispatch_get_main_queue(),{ 
     completion() 
    }) 
} 
+0

私はあなたの最初の解決策を試してみました。この方法で、私はコンソールにデータを印刷することができましたが、データはcollectionViewに印刷されませんでした。 –

+0

また、メインスレッドで完了クロージャを呼び出そうとしましたか? (追加情報を参照してください) – riik

+0

あなたはインスタンス変数 'arrSurvey'にデータを決して割り当てないようです。 collectionViewをリロードする直前に、 'arrSurvey = JSON.arrSurvey'のようなコールバックブロックのシネルルトンからデータ配列を割り当ててみてください。お役に立てれば。 – riik

関連する問題