Как сделать UITableview с Textfield в swift?
Я хочу, чтобы вид таблицы с текстовыми полями в каждой ячейке,
у меня есть пользовательский класс в Swift файл:
import UIKit
public class TextInputTableViewCell: UITableViewCell{
@IBOutlet weak var textField: UITextField!
public func configure(#text: String?, placeholder: String) {
textField.text = text
textField.placeholder = placeholder
textField.accessibilityValue = text
textField.accessibilityLabel = placeholder
}
}
тогда в моем ViewController у меня есть
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCellWithIdentifier("TextInputCell") as! TextInputTableViewCell
cell.configure(text: "", placeholder: "Enter some text!")
text = cell.textField.text
return cell
}
что хорошо:
но когда пользователь вводит текст в текстовое поле и нажимает кнопку, Я хочу сохранить строки каждого текстового поля в массиве. Я пробовал с
text = cell.textField.text
println(text)
но он не печатает ничего, как если бы это было пусто
как я могу заставить его работать?
3 ответов
в вашем представлении контроллер становится UITextFieldDelegate
Посмотреть Контроллер
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {
var allCellsText = [String]()
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomTableViewCell
cell.theField.delegate = self // theField is your IBOutlet UITextfield in your custom cell
cell.theField.text = "Test"
return cell
}
func textFieldDidEndEditing(textField: UITextField) {
allCellsText.append(textField.text)
println(allCellsText)
}
}
это всегда будет добавлять данные из текстового поля в массив allCellsText.
создать переменную
var arrayTextField = [UITextField]()
после этого в func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{}
добавить
self.arrayTextField.append(textfield)
перед возвратом ячейки, после этого для отображения значений с помощью
for textvalue in arrayTextField{
println(textvalue.text)
}
этот метод инициализирует ячейку, у вас нет модели для сохранения этих данных, поэтому
text = cell.textfield.text
ничего!
вы можете инит var textString
в viewcontroller наследование UITextFieldDelegate
optional func textFieldDidEndEditing(_ textField: UITextField)
{
textString = _textField.text
}
optional func textFieldShouldReturn(_ textField: UITextField) -> Bool{
return true
}
и cell.textField.text = textString