2016-11-28 48 views
0

我有一個自定義tableview單元格與UILabel和UITextField。我想將帶有標籤的textField中的數據附加到字典數組([label:textfield])。我可以使用textFieldDidEndEditing獲取textField數據,但我不確定如何獲取同一文本字段的單元格標籤。我想我會需要訪問該單元格的indexPath。我試着發送一個通知給DidSelectRow,但這看起來太複雜了。添加自定義單元格標籤和TextField文本到字典數組

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()中爲單元格執行此操作! [UITableViewCell] //在這裏對單元格進行操作}' – iphonic

+0

這使我可以看到每個可見單元格中的每個元素,但它不會讓我更新並將這些單元格的值附加到我的字典中(請參閱更新) –

+0

不允許你更新?你有什麼類型的對象,如果它的'NSArray或NSDictionary'你需要使用'NSMutableArray或者NSMutableDictionary',並且改變了值後重新加載表。 – iphonic

回答

1

你能不能做這樣的事?

爲什麼不設立tag每個標籤和textFiled喜歡跟隨你cellForRowAtIndexPath

textField.tag = indexPath.row 

,並在委託textFieldDidBeganEditing或在必要時使用標籤來獲取cell然後label如下

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

然後使用currentCell您可以訪問它的label

+0

這很好,但我並不是真的想惹這個項目的標籤。在評論中提出的可見細胞方向似乎是一個好方向,但我仍然遇到麻煩。 –

+0

第二個選項可以是你的UILabel和文本字段的子類 –

相關問題