0

いくつかのテキスト フィールドを持つ 1 ページのアプリケーションがあります。1 つのフィールドはドロップダウン メニューで、ユーザーはこのテキスト フィールド (text1) に入力する項目を選択できます。このテキスト フィールド (text1) が入力された後、他のテキスト フィールド (text2、text3 など) を自動的に更新するにはどうすればよいですか。

例: text1、text2、text3 の 3 つのテキスト フィールドがあります。バックエンドには、それらの間に一致する配列リストがあるため、text1 の値は text2 と text3 の適切な値を見つけることができます。しかし、ユーザーが text1 の値を変更した後、text2 と text3 を動的に更新するにはどうすればよいですか。

もう 1 つの基本的な質問: viewdidload のテキスト フィールドにテキスト文字列を表示するにはどうすればよいですか?
例: データベースから値を取得しました。ビューのロード時にこの値をテキスト フィールドに表示する方法。

4

1 に答える 1

1

わかりました、私は質問に1つずつ対処しようとします:

まず、ロード時にテキスト フィールドを表示します。テキストを保持するラベルへのアウトレットを作成します。例 - .h ファイルで開始

@property (weak, nonatomic) IBOutlet UILabel *textbox1;

Interface Builder で、ラベルをドラッグして、ドラッグしたばかりのラベルを設定したプロパティに接続します。

これで、価値を保存するアウトレットができました。

何かを入れるには、.m ファイルに移動して-(void)viewDidLoad、次のようなものを追加します。

self.textbox1.text = @"some text to display";

これで画面に何かが表示されるはずです。

ここで、ユーザーの入力中または入力後に他の画面上のラベルを動的に更新する場合は、テキスト フィールド デリゲートを実装する必要があります。全体を説明しようとするのは少し複雑ですが、基本的に .h ファイルでは、実装行は次のようになります。

@interface YourViewControllerNameHere : UIViewController <UITextFieldDelegate>

次に、.m ファイルにいくつかの変更を加える必要があります

最初にviewDidLoadこの行を追加します

self.textbox1.delegate = self;  //this tells the UILabel to send changes to your program

次に、オープンスペースでこれらのコールバックメソッドを実装できます。次に、プログラムを実行すると、ログにより、いつどこで何が起こっているかがわかります。

基本的に、何をしたいかによって、正しいメソッドからコードを呼び出します。

- (void)textDidChange:(id<UITextInput>)textInput {
  NSLog(@"text did change");
}

- (void)textFieldDidBeginEditing:(UITextField *)textField {
  NSLog(@"text field did begin editing");
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
  NSLog(@"text field did end editing");
}

-(void)textWillChange:(id<UITextInput>)textInput {
  NSLog(@"text will change");
}

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  NSLog(@"text field should change characters in range");
  //if this is disabled no character will appear
  //use to filter out bad characters
  return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
  NSLog(@"text field should return");
  return YES;
}
于 2012-08-06T21:32:04.523 に答える