2015-05-11 2 views
1

У меня есть tableView. Когда ячейка подключена/выбрана, ячейка расширяется, чтобы выявить несколько активов. Один актив - текстовое поле. Еще одна кнопка «отправить».Доступ к текстовому полю в таблицеView SWIFT

Мне нужно получить доступ к пользовательскому вводу из текстового поля при нажатии кнопки «Отправить». Как я могу это сделать?

Важно: я не могу использовать didSelectRowAtIndexpath, поскольку ячейка уже выбрана/расширена.

В настоящее время я на customCell следующее:

@IBAction func submitButtonPressed(sender: UIButton) { 
    // prepareForSegue is on mainVC 
    self.textString = self.textField.text 
    println(self.textString) 
} 

На "prepareForSegue" в MainVC я следующее:

 var cell : CustomCell = self.tableView.dequeueReusableCellWithIdentifier("myCell") as! CustomCell 

     let path = self.tableView.indexPathForSelectedRow()! 
      println(cell.textField.text) 
      self.newText = cell.textString 
      self.newInt = self.newText.toInt() 

      println(self.newText) 
      println(self.newInt) 

следующий код правильно prints(self.textString) Однако cell.textString, self.newText и self.newInt всегда - nil.

Любая идея, почему?

+1

придать ему уникальный тег, а затем искать Ваш взгляд для элемента с этим тегом – Jasper

+0

то, что вы имеете в виду, тег? Не является ли cell.textString его тегом? –

ответ

5

Вот пример кода.

@IBAction func submitButtonPressed(sender: UIButton) { 

     // prepareForSegue is on mainVC 
      let indexPath = self.tableView!.indexPathForSelectedRow()! 
      let selectedCell = self.tableView!.cellForRowAtIndexPath(selectedIndexPath!) as! UICustomCell!//your custom cell class. 

      self.textString = selectedCell.textFied.text //textFied is your textfield name. 
      println(self.textString) 
} 

Для скор 2, этот код работает на основе индекса строки

let indexPath = NSIndexPath(forRow: 1, inSection: 0) // This defines what indexPath is which is used later to define a cell 
       let selectedCell = sptableViewObj.cellForRowAtIndexPath(indexPath) as! AddBillerTableViewCell! 

       self.textFieldTwo = selectedCell.spTextfield.text //textFied is your textfield name. 
       print(self.textFieldTwo) 
+0

Удивительно, я добавил это к segue (не к кнопке в ViewController CustomCell, и, похоже, работает! Время, чтобы поужинать, а затем полностью реализовать то, над чем я работаю. Спасибо Amit89! –

+1

Это отлично подходит для тех, кто находится в которые все UITableViewCell видны.Просто проверьте то же самое, когда у вас около 10-15 ячеек, и вы первая ячейка не видна. Теперь попробуйте получить доступ к первой соте. Приложение будет аварийно. Любой, у кого есть решение для того же? –

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