Использование подкласса с делегатами текстового поля

У меня есть подкласс CustomCell, который наследуется от моего родительского класса CreateEvent. Подкласс описывает разные ячейки для ячейки табличного представления, которая находится в контроллере CreateEvent View. В одной конкретной ячейке у меня есть текстовое поле, но у меня возникают проблемы с получением значения из этого текстового поля, когда пользователь вводит текстовое поле. У меня также возникают проблемы с закрытием клавиатуры внешними прикосновениями и нажатием клавиши возврата, но я в основном сосредоточен на получении текста из текстового поля. Я знаком с выполнением этих функций в обычном файле swift, но, поскольку это подкласс, я не уверен, что делать. Я пробовал использовать:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    entranceFeeTextField.resignFirstResponder()
    return true
}

.. но это не помогает.


person Kevin    schedule 29.09.2016    source источник


Ответы (1)


вам нужно предоставить делегата UiTextfeld в методе делегата UITableview, и ваш CustomCell выглядит так

class CustomCell: UITableViewCell {

@IBOutlet var textField: UIImageView!


override func awakeFromNib() {
    super.awakeFromNib()

}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
}

}

и еще одна вещь для реализации протокола UITextfield в вашем представлении контроллера. И ваш контроллер выглядит так

class CreateEvent: UIViewController,UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate {

//MARK: - Content TableView Methods
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("CustomCell", forIndexPath: indexPath) as! CustomCell
    cell.textField.delegate = self // like delegate

    return cell

}

//MARK: - UITextField Methods
func textFieldShouldReturn(textField: UITextField) -> Bool {

    textField.resignFirstResponder()
    return true
}
}

Я надеюсь, это поможет

person jignesh Vadadoriya    schedule 29.09.2016
comment
Что такое ячейка в cell.textField.delegate = self? - person Kevin; 29.09.2016
comment
Ячейка - это ваша пользовательская ячейка, которая является подклассом UITableviewCell, а пользовательская ячейка должна содержать поле uitextfield. - person jignesh Vadadoriya; 29.09.2016
comment
Ах я вижу. И обе строки кода входят в родительский файл Swift? Итак, распознает ли родительский файл swift, что я вызываю textField из подкласса CustomCell.textField.delegate = self? - person Kevin; 29.09.2016
comment
я отредактировал свой ответ, пожалуйста, проверьте, надеюсь, вы поймете - person jignesh Vadadoriya; 30.09.2016
comment
Моя единственная проблема заключается в том, что в функции tableView она может распознавать textField после того, как я объявлю делегата, но в функции textFieldShouldReturn она не распознает textField. - person Kevin; 30.09.2016