Вы можете добавить текстовое поле на панели навигации следующим образом.
extension UIViewController {
func setTextFieldInNavigationBar(withDelegate delegate: UITextFieldDelegate? = nil) {
let txtField = UITextField(frame: CGRect(x: 0, y: 0, width: 120, height: 30))
txtField.placeholder = "Enter some text"
txtField.delegate = delegate
//set other property as required
navigationItem.titleView = txtField
}
//it will return UITextField, if there is TextField set in titleView in navigation bar
var navTextField: UITextField? {
return navigationItem.titleView as? UITextField
}
}
Вы можете вызвать это в контроллере представления следующим образом.
Если вы хотите реализовать делегат, используйте это ...
setTextFieldInNavigationBar(withDelegate: self)
или если вы не хотите реализовывать делегат, используйте это ...
setTextFieldInNavigationBar()
Вы можете использовать текстовое поле следующим образом в UIViewController
print(navTextField?.text)