2016-11-28 2 views
0

У меня есть пользовательская ячейка tableView с UILabel и UITextField. Я хотел бы добавить данные из textField с меткой в ​​массив словарей ([label: textfield]). Я могу получить данные textField с помощью textFieldDidEndEditing, но я не уверен, как получить метку ячейки для того же текстового поля. Я думаю, мне нужен доступ к 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 и текстового поля –

 Смежные вопросы

  • Нет связанных вопросов^_^