1

重複の可能性:
iOS: 親ビュー コントローラーと通信中

FirstViewController と SecondViewController という名前の 2 つの viewController があるとします。

ナビゲーションを使用して、FirstViewController から SecondViewController に移動します。

SecondViewController に resultArray という名前の配列が 1 つあります。

FirstViewController で resultArray の値を取得したい

それでは、FirstView Controllerで値を取得するにはどうすればよいですか?

何か案が?

4

4 に答える 4

1

回答フォーム@Nishant B(およびその他の後続の回答)が機能します。

UINavigationController を使用していて、コントローラーに 1 ステップ戻ってアクセスしたい場合は、SecondViewController 内でこれを行うこともできます。

NSUInteger count = [[self navigationController].childViewControllers count];
FirstViewController* firstVC = [[self.navigationController childViewControllers] 
    objectAtIndex:count -2];
[firstVC setSomeValue:someValue];
于 2013-01-31T11:26:33.560 に答える
0

あなたは次の方法でそれを達成することができます:

「FirstViewController」ファイル内:

1)次のような配列オブジェクトを作成します。arrTest;

2)たとえば次の1つのメソッドを作成します。

-(void)getArrayValue:(NSMutableArray *)pArr
{
     arrTest = pArr;
}

3)プッシュする前に「SecondViewController」のメソッドを呼び出します。

[objSecondViewController setParent:self];\

さて、「SecondViewController」ファイルで:

.hファイル:

@class FirstViewController;

.mファイル内:

#import "FirstViewController.h"

1).hファイルで1つの変数を宣言します。

id parent;

2)1つのメソッド「.h」および「.m」ファイルを宣言して作成します。

-(void)setParent:(id)pID
{
    parent=pID;
}

3)配列を思いついたら、次のようなメソッドを呼び出します。

[parent getArrayValue: <your_new_array>];

うまくいけば、あなたはあなたが欲しいもののアイデアを得ました。

ハッピーコーディング!

乾杯!

于 2013-01-31T11:19:27.957 に答える
0

ローカル通知を使用する方法もあります。

B から A にデータを送信するとします。

ボタンなどを押したときに B で次の操作を行います。

- (NSString *) saveAndExit
{
    [[NSNotificationCenter defaultCenter] postNotificationName: @"AnswerValue" object: answerView.text];
    [self.navigationController popViewControllerAnimated:YES];
    return @"abc";
}

そして A'sviewDidLoadに、次を追加します。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(incomingNotification:) name:@"AnswerValue" object:nil];

次のメソッドも追加します。

- (void) incomingNotification:(NSNotification *)notification{
NSString *result = [notification object];

}

通知名は両方で同じである必要があります。この場合、名前は AnswerValue です。これにより、値「abc」が B から A に送信され、 に格納されresultます。

于 2013-01-31T11:26:38.173 に答える
0

ここでできることは、たとえば最初のクラスでコンストラクターを作成することです

-(void)initWithArrayOfSecondClass:(NSMutableArray *)arr_OfSecondClass;
{
    arr_FirstClassArray = [[NSMutableArray alloc]initWithArray:arr_OfSecondClass];

}

2 番目のクラスから、この配列を次のように送信します。

[objOfFirstClass initWithArrayOfSecondClass:resultArray];
于 2013-01-31T11:14:53.907 に答える