質問

API呼び出しを介してデータの配列を取得する「ダウンロード」View Controllerをロードすることから始まるアプリを構築しています。データが返されると、アプリはこのView Controllerのビューを非表示にし、2つのNavigation Controllerを収容するTab Bar Controllerをロードします。

最初のNavigation Controllerにプッシュされる最初のビューは、テーブルビューです。このテーブルビューでは、最初の「ダウンロード」View ControllerでAPI呼び出しから取得したデータを表示する必要があります。

誰かが「ダウンロード」とTable View Controllerの間でこのデータを渡す方法を説明してもらえますか?彼らはお互いについて知らないことを考慮してください。

重要な注意点は、Tab Bar Controllerをロードする前にデータをフェッチする必要があるため、それを使用するTable View Controller内から単純にデータをフェッチすることはできないということです。

役に立ちましたか?

解決

データはアプリケーションに従属するため、アプリケーションデリゲートはデータへのポインタを保持し、2つのビューは [[UIApplication sharedApplication] delegate] を使用してデータにアクセスできます。

もう1つのオプションは、ダウンロードが完了したときに、データを含むメッセージをアプリケーションデリゲートに送信することです。あなたは、アプリがView Controller自体を隠すのではなく、View Controllerのビューを隠すと言っているので、あなたはすでにこのようなことをしていると思います。どういうわけか、ダウンロードが完了したことを知っている必要があります。そのため、ダウンロードコントローラーで:

- (void) downloadFinished {
    [listener downloadFinished:data];
}

アプリケーションのデリゲート(前のスニペットの listener ):

- (void) downloadFinished:(NSData *)data {
    CustomViewController *c = [[[CustomViewController alloc] initWithData:data] autorelease];
    [downloadView removeFromSuperview];
    [window addSubview:c.view];
}

カスタムView ControllerがNIBをロードし、テーブルからアクセスできるようにデータを保持する場所。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top