1

たとえば、次のコードを参照してください。

UITextField * myTextField = [[UITextField alloc]init];
NSString * myString = myTextField.text; //Set as reference to string here

NSLog(@"%@", myString); //Should be null

[myTextField setText:@"foobar"];

NSLog(@"%@", myString); //Should be foobar

myTextField テキストの値が変更されると、その「myString」も変更されることを期待しています。

UITextFieldデリゲートを設定し、「onChange」をチェックしてから文字列を変更するという別の方法があることは知っていますが、他の方法があるかどうかを調べています。

4

2 に答える 2

3

これはあなたが望む方法では実行できないと思います。のtextプロパティUITextFieldNSString不変です。変更すると、新しいNSStringオブジェクトが作成されます。これとは別に、これを不可能にするボンネットの下で他のことが起こっていることは確かです.

これを行う最も簡単な 2 つの方法は、おそらく次のとおりです。

  1. UITextFieldDelegateあなたが言ったようにa を設定し、textField:shouldChangeCharactersInRange:replacementString:メソッドを実装します。

  2. イベントを使用NSNotificationCenterして観察しUITextFieldTextDidBeginEditingNotificationます。オブジェクトの割り当てが解除されたら、必ずオブジェクトをオブザーバーとして削除してください

于 2013-10-02T18:39:48.427 に答える
0

NSString不変クラスです。変更することはできません。できることは、NSString *ポインター変数を別の文字列に向けることだけです。別のものを置く必要があります

myString = myTextField.text;

この動作が必要な場合はそこにあります。

于 2013-10-02T18:38:27.150 に答える