2016-11-28 6 views
0

私はUILabelとUITextFieldを持つカスタムtableViewセルを持っています。私は、textFieldのデータを辞書の配列に追加したいと思っています([label:textfield])。 textFieldDidEndEditingを使用してtextFieldデータを取得できますが、同じテキストフィールドのセルラベルを取得する方法がわかりません。私はそのセルのindexPathにアクセスする必要があると思います。私はDidSelectRowに通知を送信しようとしましたが、それはあまりにも複雑に思えました。カスタムセルラベルとテキストフィールドのテキストを辞書の配列に追加する

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: expenseCell, for: indexPath) as! LineItemTableViewCell 
     let sectionsArray = expenses[sections[indexPath.section]] 
     let expenseItem = sectionsArray?[indexPath.row] 
     cell.budgetLineItemView.label.text = expenseItem! 
     cell.budgetLineItemView.lineItemTextField.delegate = self 

     return cell 
    } 

    //MARK: UITextField Delegate 

    func textFieldDidBeginEditing(_ textField: UITextField) { 
     textField.layer.borderColor = UIColor.blue.cgColor 
     textField.keyboardType = .decimalPad 
     textField.becomeFirstResponder() 
    } 


    func textFieldDidEndEditing(_ textField: UITextField) { 
     //get textfield text after editing here 
    } 

これは私の辞書です:

var expenses:[String:[[String:Double]]] = ["Housing":[["Rent/Mortgage":0.0], 
["Gas":0.0],["Water/Power":0.0],["Cable/Internet":0.0],["Garbage":0.0],["Property 
Tax":0.0],["Homeowners/Renters Insurance":0.0]],"Transportation":[["Car 
Payment":0.0],["Car Insurance":0.0],["Roadside Insurance":0.0]],"Other Expenses": 
[["Health Insurance":0.0],["Life Insurance":0.0],["Disability Insurance":0.0], 
["Student Loans":0.0],["Cell Phone":0.0],["Other":0.0]]] 
+0

tableView.visibleCells()内のセルに '! [ //ここでセルで何かを行う} ' – iphonic

+0

これは、表示されている各セルの各要素が何であるかを見ることができますが、それらのセルの値を更新して辞書に追加することはできませんアップデート) –

+0

更新できませんか?あなたが 'NSArrayまたはNSDictionary'を' NSMutableArrayまたはNSMutableDictionary'を使用して値を変更した後にテーブルをリロードする必要がある場合、オブジェクトの型は何ですか。 – iphonic

答えて

1

あなたはこのような何かを行うことができますか?

各ラベルにtagを設定して、以下のようにlabelcellを得るためにあなたのcellForRowAtIndexPath

textField.tag = indexPath.row 

にし、デリゲートtextFieldDidBeganEditingまたは必要に応じて使用タグにフォローようtextFiledない理由

let indexpath = NSIndexPath(forRow: textField.tag, inSection: 0) 
let currentCell = tblTest.cellForRowAtIndexPath(indexpath) as! youCellClass 

その後、あなたはそれがlabel

のアクセスも currentCellを使用して10
+0

これはいいですが、私は本当にこのプロジェクトのタグを使いこなしたくありません。コメントに表示された可視セルの方向性は良い方向に見えますが、まだ問題があります。 –

+0

2番目のオプションは、あなたのUILabelとテキストフィールドをサブクラス化することです –

関連する問題