2017-02-23 5 views
0

カスタムセルクラス内にある関数内のアクティブセルのindexpath.rowを調べるにはどうすればよいですか?私はこの使用カスタムセルクラス内のIndexpath.row

:だから

protocol ItemTableViewCellDelegate: NSObjectProtocol { 
    func textFieldDidEndEditing(text: String, cell: ItemTableViewCell) 
} 

class ItemTableViewCell: UITableViewCell, UITextFieldDelegate { 

    @IBOutlet weak var itemTitle: UITextField! 
    @IBOutlet weak var date: UILabel! 

    var delegate: ItemTableViewCellDelegate? 


    override func awakeFromNib() { 
     itemTitle.delegate = self 
    } 

    func textFieldDidEndEditing(_ textField: UITextField) { 
     if let text = textField.text { 
      delegate?.textFieldDidEndEditing(text: text, cell: self) 

     } 
     //BTW: everything below this comment runs every time I want it to, so no problem about that 
     items.insert(itemTitle.text!, at: //(Here I want the indexpath)) 
    } 


} 

を、私は、テキストフィールドの変化として、私の配列を更新します。それを行うために、私はインデックスパスを理解する必要があります。私はそうそれを入れてみました: items.insert(itemTitle.text!, at: indexPath.row)

しかし、私はそれをさせません。

セルクラスではこれができない場合は、メインクラス内でどのように行うことができるかについてのアイディアを公開しています。

私の見解のスクリーンショット:

enter image description here

+0

'items'配列はどこに定義されていますか? –

+2

セルには、データモデルを更新するテキストが変更されたことを通知できるデリゲートが必要です。 – dan

+0

デリゲートの代わりにクロージャを使用することもできます。 – vikingosegundo

答えて

1

があなたのItemTableViewCellクラス

var indexPathForCell: IndexPath? 

にそして、あなたの親ビューコントローラクラスcellForRowAtIndexPathでIndexPath変数を追加します -

let cell = tableView.dequeueReusableCell(withIdentifier: "yourIdentifier", for: indexPath) as! ItemTableViewCell 

cell.indexPathForCell = indexPath 

return cell 
+0

これはほとんどの場合動作しますが、時にはセルに設定されず、 – Junaid

関連する問題