2016-09-05 7 views
0

私は5つのカスタムUITableViewCellを持つUITableViewを持っています。カスタムUITableViewCellsでは、私は自分のUI要素(UILabel、UITextField)用のIBOutletsを持っています。自分のカスタムUITableViewCellにすでにリンクされているため、ビューコントローラのUI要素のIBOutletを作成できません。iOS Swift - Exit/Save時にカスタム表ビューのセルからデータをエクスポート

"保存"タイプのUIBarButtonItemを押すと、私のUITableViewCellsのデータにアクセスできるようにしたいと思います。私の自分のクラスに私のUITableViewCellsからデータを解析するために。

私はすでにリターンコントローラにunwindメソッドを書いており、ソースコントローラにprepareForSegueメソッドを書いて、それを動作させました。私はその特定の時刻にカスタムUITableViewCellsからデータを取得する必要があります(保存時には、テキストフィールドの編集やテーブル行の選択が解除されているときではありません)。

この種の動作を達成するための「ベストプラクティス」は何ですか?

+0

テーブルビューセルクラスは1つだけ使用していますか?私はテーブルが動的であることを意味しますか? –

+0

私は5つのプロトタイプのセルを使用します。リンクされた画像を見る https://s13.postimg.io/td56d0d1x/Screen_Shot_2016_09_05_at_2_57_04_PM.png – BARJ

+0

動的ではなく静的テーブルを使用することは可能ですか? –

答えて

1

カスタムセルの外観がわからないので、その中に1つのテキストフィールド(myTextField)があるセルを例として使用します。カスタムセルクラスで

、次のようにプロパティを追加します。

var data = [String]() 
let sections = numberOfSectionsInTableView(self.tableView) 
for s in 0..<sections { 
    let rows = tableView(self.tableView, numberOfRowsInSection: s) 
    for r in 0..<rows { 
     let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: r, inSection: s)) as! YourCustomCell 
     data.append(cell.value) 
    } 
} 

そして今、あなたは文字列の配列を持っている:

var value: String? { 
    return myTextField.text 
} 

そして、保存ボタンの@IBAction方法では、これを行います!

セルのデータが文字列ほど単純でない場合は、Eurekaを使用してください。