2

画面の大部分を占めるサブビューを持つ親コンテナビューコントローラがあるシナリオがあります。このサブビューは、同じデータの3つの異なるビュー(マップ、テーブル、およびギャラリー)を交換するために使用されます。ユーザーが表示したいデータのビューを選択するために使用されるセグメント化されたコントロールがあります。親コンテナビューコントローラにモデルタイプの配列コレクションがあり、これら3つの異なる子ビューコントローラにそれぞれこのデータをそれぞれのビューに表示させたいと考えています。データを4回(親で1回、子で3回)複製することなくこれを行うためのクリーンな方法はありますか?子がその配列にアクセスするために親ViewControllerを呼び出すことができないため、データを複製する必要があると想定しています。また、適切な継承状況ではありません、親は同じタイプのViewControllerよりもコンテナであるためです。また、子供は親に何も通知する必要がないため、委任された状況ではありませんが、その逆です。

どんな提案でも大歓迎です。

ありがとう。

4

2 に答える 2

4

データを管理するためのクラス(以下のMyDataController)を作成し、共有インスタンスを使用してアプリのどこからでもデータにアクセスします。

インターフェイス(MyDataController.h)

@interface MyDataController : NSObject {
   NSMutableArray *myData; // this would be the collection that you need to share
}
+ (MyDataController*)sharedDataController;
// ... add functions here to read / write your data
@end

実装(MyDataController.m)

static MyDataController* sharedDataController; // this will be unique and contain your data

@implementation MyDataController

+ (MyDataController*)sharedDataController
{
    if (!sharedDataController)
        sharedDataController = [[[MyDataController alloc] init] autorelease]; // no autorelease if ARC
    return sharedDataController;
}

// ... implement your functions to read/write data
@end

最後に、どこからでもこの静的オブジェクトにアクセスするには、次のようにします。

MyDataController *dataController = [MyDataController sharedDataController]; // this will create or return the existing controller;
于 2013-02-21T17:27:38.563 に答える
0

データをシングルトンクラスに入れて、各子ビューコントローラーにシングルトンからデータを取得させることができます。

于 2013-02-21T17:27:39.767 に答える