2

これが私の問題です:

モデルクラスの配列があります(たとえば、「addressModel」とフィールドaddress、street、city)。これで、モデルクラスの3つのフィールドに3つのUITextFieldを持つカスタムセルができました。ユーザーが編集を終了したら、特定のテキストフィールドのデータをそれぞれのモデルオブジェクトに(検証&)追加します。(例:ユーザーがaddressTextFieldの編集を終了し、次にaddressModel.address = addressTextField.text)。

ユーザーが選択したテキストフィールドとindexPath.rowをどのように識別できますか?私の場合、両方を知る必要がありますか?何か助けはありますか?

ありがとうございました。

4

3 に答える 3

2

ビューコントローラがプロトコルを実装している場合は、メソッド呼び出しUITextFieldDelegateを受け取ることができます。textFieldDidEndEditingそこでは、ユーザーが編集したばかりのフィールドのタグを取得できます。セルを作成するときに、ある種の整数タグスキームを指定して、ユーザーがその時点で実際に編集していたセクション、行、および特定のフィールドをリバースエンジニアリングできるようにすることができます。あなたは次のようなことをすることができます:

textField.tag = (indexPath.section * 10000) + (indexPath.row * 100) + (textFieldIndex);

行ごとに100行を超えるtextFieldsがない、またはセクションごとに100行を超えないと仮定すると、この特定のスキームは機能するはずです。

于 2012-07-03T13:16:17.213 に答える
0

ユーザーが編集を終了したときにデータを検証できます。つまり、UITextFieldデリゲートメソッドでデータを検証できます。

- (void)textFieldDidEndEditing:(UITextField *)textField;

ここでは、そのテキストフィールドを取得するため、どのテキストフィールドが編集されているかを確認する必要はありません。また、どの行を識別したい場合は、行以外のタグをテキストフィールドに割り当てることができ、それに基づいて、どの行のテキストフィールドを知ることができます。編集されます。

于 2012-07-03T13:16:07.663 に答える
0

各テキストフィールドの個別のタグを設定します..そしてdidEndEditingで:メソッドは次のコードを使用します...。

  if(textField.teg == FIRST_TAG){
      // do your code
  }
  else if(textField.teg == SECOND_TAG){
         // do your code
 }...

 and soo on.... 

これがあなたを助けるかもしれません...

于 2012-07-03T13:29:31.633 に答える