Я пытаюсь создать повторно используемый компонент пользовательского интерфейса в моем приложении, этот конкретный компонент содержит UITextFeild.Я успешно настроил текстовое поле в представлении, и оно отлично отображается, однако ... Настройка делегата текстовых полей не работает.
Я пытался ссылаться на текстовое поле из созданного объекта следующим образом:
let sessionNameCell = ReusableComponents().createTextFieldCell()
sessionNameCell.textField.delegate = self
Но не могу ссылаться на текстовое поле из контроллера.
Я также пытался установитьделегировать несколько способов внутри функции, которая создает представление:
textField.delegate = self
и
textField.delegate = ViewController()
последний сбой приложения, как я понимаю, создание экземпляра объекта не являетсяподходящее решение
Полный код ...
Просмотр контроллера
class HostSessionSetupController : UITableViewController, UITextFieldDelegate {
private var sessionNameCell: UITableViewCell = ReusableComponents().createEditableTableRow(title: "Session Name", placeholder: "e.g. Marks birthday")
override func viewDidLoad() {
super.viewDidLoad()
sessionNameCell.textField.delegate = self
}
// The delegate method i need to run
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
if let input = textField.text {
if input != ""{
self.title = "Setup " + input
} else {
self.title = "Setup Session"
}
}
}
Просмотр функции
func createTableRow(title: String, accessoryType: UITableViewCell.AccessoryType = .none) -> UITableViewCell {
let cell = UITableViewCell()
cell.backgroundColor = .backgroundDarkBlack
cell.textLabel?.textColor = .white
cell.textLabel?.text = title
cell.selectionStyle = .none
cell.accessoryType = accessoryType
return cell
}
func createEditableTableRow(title: String, placeholder: String) -> UITableViewCell{
let cell = createTableRow(title: title)
let textField = UITextField(frame: CGRect(x: 40, y: 0, width: cell.frame.width, height: cell.frame.height))
textField.textColor = .white
textField.attributedPlaceholder = NSAttributedString(string: placeholder, attributes: [NSAttributedString.Key.foregroundColor: UIColor.init(white: 1, alpha: 0.5)])
textField.keyboardAppearance = .dark
textField.returnKeyType = .default
textField.textAlignment = .right
cell.addSubview(textField)
return cell
}
Единственная функциональность, которую я пробуюполучить от всего этого - спрятать клавиатуру на клавиатуре возврата!D:
Спасибо за любую помощь!