2016-11-28 9 views
0

私はしばらく何かしてきたことがあり、解決策を見つけることができませんでした。ビューコントローラーでデータを一度だけロードする

私はミュージカルのようなアプリを構築しています。ここにはカスタムナビゲーションコントローラがあり、ユーザーは3つの画面をスワイプすることができます(アプリのスクリーンショットを参照)。

ここでは、1つの画面から別の画面にスワイプしてからもう一度やり直すと、すべてのデータが再度読み込まれ、最初の動画に戻ってきます。スワイプしたい画面間で同じビデオで同じタイムスタンプで戻ってきます。以前のビデオと同じです。上記

static dispatch_once_t onceToken; 

dispatch_once(&onceToken, ^{ 
    [MBProgressHUD showHUDAddedTo:pageViewController.view animated:TRUE]; 
    [self loadjson_homeVideoData]; 
}); 

私は、Webサービスを呼び出すにNSArrayでの応答を格納し、別のビューコントローラにNSDictionaryのにこの配列を渡しているここで、私のコードブロックです。 (NSArrayとDictionaryの両方が強い財産です)

問題は、別のコントローラに移動してホームコントローラに来ると、すべてのデータがnullになり、アプリケーションがクラッシュします。

ビューコントローラが再び呼び出されたときにそのデータを表示する方法はありますか?私は毎回ではなく、一度にデータをロードしたいだけです。

PS:私はここにいくつかのガイダンスを本当に感謝dispatch_once(& onceToken、^ {のviewDidLoadで()

を呼び出す - 参考のために、あなたは、iOS

this is the home screen, see at the top are three screens that the user can swipe among

答えて

0
にmusical.lyアプリをチェックして
dispatch_once(&onceToken, ^{ 
    [MBProgressHUD showHUDAddedTo:pageViewController.view animated:TRUE]; 
    [self loadjson_homeVideoData]; 
}); 

は、これであなたのコードを交換し、その後、実行して確認してください。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     [MBProgressHUD showHUDAddedTo:pageViewController.view animated:TRUE]; 
     [self loadjson_homeVideoData]; 
    }); 
+0

例:HUDをビューに追加し、jsonをグローバルキューにロードしています。両方のグローバルキューではなく、HUDのメインキューを使用する必要があります。 –

+0

問題は実際にキュー内のAPIを呼び出すことではありません。ホームビューコントローラのNSDictionaryにレスポンスを保存しています。他のコントローラに移動すると、その辞書はnullになり、データは固執しません。 –

+0

あなたはその辞書をnextViewControllerに渡していますか? –

関連する問題