2012-04-09 12 views
0

まだiPhoneのプログラミングを把握しようとしていて、問題を抱えています。私は選択/クリックされた各セルのテキスト値を格納するクラス内にNSMutableArrayを持っています。別のビューでは、私は前に形成された配列で別のテーブルビューを作成したいと思います。しかし、View2からこの配列(View1のプロパティ)にアクセスするにはどうしたらいいですか?別のクラスから配列を呼び出す

別のビューに移動しても配列に文字列が埋め込まれますか?それとも、永続性を維持するために、これらの行に沿ってsqLite DBなどが必要ですか?

私はView1をからの配列の内容を別のNSMutableArrayのを初期化しようとしているが、これは権利ではないようです。

//View2.h 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSMutableArray *savedExercise = [Create workout]; 
} 

すべてのヘルプははるかに高く評価されるだろう。

答えて

0

あなたがVIEW1からVIEW2を作成した場合、一般的なパターンは、ビュー2を作成するときに、データがあなたの配列ですので、あなたが

view2 = [[View2 alloc] initWithData:data]; 

を呼ぶだろう、別のinitメソッドを作成することです。

VIEW2では、あなたはdataPropertyがVIEW2のプロパティがある

-(id)initWithData:(NSArray*)_data{ 
    self = [super init]; 
    if(self){ 
     dataProperty = _data; 
    } 
    return self; 
} 

を持っているでしょう。

0

View1のインスタンス変数 "workout"に対してgetter(および必要に応じてsetter)メソッドを作成する必要があります。これを行うには、Objective-Cの@property機能を使用できます。

次に、View2のView1のインスタンスにアクセスして、workoutへのポインタを取得します。

より良い方法は、シングルトンの「データマネージャ」を作成し、sharedInstanceメソッド(チャットで説明したように)を使用してアクセスすることです。データはそのインスタンスによって完全に管理され、そのsharedInstanceと「話す」ことによって、いつでもアプリケーションのどこでもアクセスできます。

+0

私は印象ゲッターの下にいて、あなたが配列を合成すればセッターがあらかじめ書かれていましたか?また、View2でView1にアクセスすると、インポートすることについて話していますか? – TopChef

+0

はい:正確には、setterメソッドとgetterメソッドは、プロパティとして "workout"を宣言し、後で合成することによって設定されます。 View2でView1にアクセスすることで、私はそれを指すことを意味しました。ビューの構造をどのように構築するかによって異なります。 – tamasgal

+0

別のクラス/ビューでgetterメソッドを呼び出す構文は何ですか? – TopChef

0

あなたのアプリがiOS 5固有で、View1からView2に行く場合、seguesとprepareForSegueを使ってデータを渡すことができます。

あなたはperformSegueWithIdentifier:sender:でセグエを呼ぶだろうと、あなたのprepareForSegue方法であなたのような何かを行うことができます:[segue.destinationViewController setArray:###pass array here###]あなただけはsetArrayと呼ばれるセッター(または何でもあなたはそれに名前を付けたい)を持っているあなたのView2Controllerのヘッダー内のプロパティを必要とします。

関連する問題