2016-06-26 5 views
0

私は3つのカスタムセルタイプを持っています - テキストフィールドを持つセル、日付フィールドを持つセル、ピッカーフィールドを持つセルです。Swift - どのカスタムテーブルビューセルが変更されたのかを特定する方法はありますか?

私はここで、データの変更をキャプチャしています:

func textFieldDidEndEditing(_ textField: UITextField) { 
     print("TextField did end editing method called") 

     switch segmentedControl.selectedSegmentIndex { 
     case 0: 
      currentItem.setObject(itemName, forKey: "itemName") 
      ..... 
      currentItem.setObject(serialNumber, forKey: "serialNumber") 

      break 

     case 1: 
      currentItem.setObject(username, forKey: "username") 

      currentItem.setObject(email, forKey: "email") 
     ... 
      break 

"のCurrentItemが" CKRecordです。

これは間違っています。フィールド(itemName、serialNumberなど)は文字列です。これらはViewDidLoadでクラウドデータで設定されます。

SUBIN K Kuriakoseはコメントで、あなたはそれがあるテキストフィールドを把握するUITextFieldtagプロパティを使用する必要があります言ったように私が正しくこれらのフィールドに事前

+1

タグを使用して、どのセルが変更されているかを識別できます。一意に識別するカスタムセルのテキストフィールドセットタグ。セルのインデックスメソッド。それは有望ですが、 'textFieldDidEndEditing'では、返されるタグは常にゼロです。 –

+0

あなたのおかげで両方.. –

答えて

2

感謝を更新するにはどうすればよいです。

テキストフィールドセルを作成するときにtagプロパティを設定する必要があります。ただ、どこかの変数を保持し、それをテキストフィールドが作成されるたびにインクリメントし、この変数にtagを設定します。

textFieldCount += 1 
myCustomCell.textField.tag = textFieldCount 

そのような何かを、あなたのアイデアを得ます。

テーブルビューの各テキストフィールドには、一意のタグがあります。 textFieldDidEndEditingでは、タグを確認します:

switch textField.tag { 
    case 1: 
     // it's the first text field! 
    case 2: 
     // it's the second text field! 
    case 3: 
     // it's the third text field! 
    default: 
     break 
} 

簡単です!

+0

パーフェクト。func textFieldDidEndEditing(_ textField:UITextField){print(_textField.tag)} –

+0

@sweeper私はポイントを取得していない:(;) –

関連する問題