2

別のクラスのアウトレットにアクセスするときに、特定の iOS に関する質問があります。

私のプロジェクトには、インターフェイスビルダーを使用して作成したカスタム tableViewCells を持つ UItableView があります。これらのセルには UItextfields があり、特定の textfield の値がいつ変更されたかを知る必要があります。(アドレス帳と同じように、テキストフィールドで新しい空のセルを追加できます)次の関数に出くわしました

[UITextfield addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

問題は、テキスト フィールドのアウトレットがサブクラス (特定の tableViewCell クラス) にあるときに、メイン クラスでこの関数を使用することです。

メインクラスでアクセスできるように、アウトレットのメソッドを作成しました。ただし、上記のコードは textFieldDidChange イベントをトリガーしません。

誰かがこの問題で私を助けてくれることを願っています。または、私の目標を達成するための別の解決策を教えてください(現在のUITextfieldに最初の文字を追加するときに新しい空のテキストフィールドを作成します)。

thnx

4

1 に答える 1

3

textFieldDidChange は機能しません。まあ、私はそれで多くの問題を抱えていました。非推奨か何かかはわかりません。どちらの方法でも、正しく委任されている限り、ほぼ同じ方法で shouldChangeCharacterInRange を使用できます。

ただし、実際に何かを入力する前にメソッドがトリガーされるため、少し変更する必要があります。そのため、新しい値を取得して自分で追加する必要があります。


- (BOOL) textField:(UITextField *)aTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// Check the replacementString
return YES;
}

于 2012-02-14T15:29:23.320 に答える