2

文字列を別のビューに渡すと、null 値になります。私のコードは次のとおりです。

ビューAddBarView.mでは、文字列があります:

nameAdded = nameField.text;   //nameAdded is defined as NSString in AddBarView.h
NSLog(@"namefrom addbarview: %@", nameAdded);  OK it works here , NsLog return the textfild

今、別のビューで AddLocationController.m

@synthesize nameAdded;
- (void)addViewControllerDidFinish:(AddBarView *)controller
{
    AddBarView *controllerAdd;
    NSLog(@"namefrom addbarview: %@", controller.nameAdded);  //here

    [self dismissModalViewControllerAnimated:YES];
}

NSLog(null) 値を返します。私のせいはどこですか?

事前にt​​x!

4

4 に答える 4

2

nameAdded = nameField.text; 値を保持するだけでした。後で nameField.text を編集すると、nameAdded の値も変更されます。値を保持するためにコピーを作成する必要があります。nameAdded = [nameField.text コピー]; nameAdded を解放したかどうか、AddBarView の viewDidUnload 関数で確認します。そうでない場合、2 つの nameAdded 変数は同じオブジェクトですか? 彼らの住所を印刷してください。

于 2012-07-13T13:49:56.940 に答える
2

次のように文字列にメモリを割り当てnameAdded、nameField で初期化する必要があります。

nameAdded=[[NSString alloc] initWithFormat:@"%@",nameField.text];

edit 以下の行を init メソッドに入れます。

nameAdded=[NSString stringWithFormat:@"%@",nameField.text];
于 2012-07-13T12:22:07.733 に答える
2

あるクラスから別のiOSに変数を渡す方法については、ここでチュートリアルを提供したこの投稿を参照してください- 変数をビューコントローラーに渡すNSStringViewController

于 2012-07-13T12:40:45.103 に答える
1

実際には、textField を保持するクラスを割り当てて初期化しています。したがって、textField も割り当てられて初期化されるため、常に NULL 値が返されます。クラス 'AddBarView' が、それにアクセスするクラスの前に呼び出された場合、単純にそれをクラスに渡すことができます。それにアクセスするクラスの後に「AddBarView」を呼び出す代わりに、textField 値をグローバル文字列に格納することをお勧めします。

于 2012-07-13T13:28:54.323 に答える