Текстовое поле на панели навигации с использованием XIB - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь добавить текстовое поле на панель навигации для функции поиска. Я понятия не имею, как это сделать. Может ли кто-нибудь помочь мне сделать это?

1 Ответ

0 голосов
/ 14 октября 2019

Вы можете добавить текстовое поле на панели навигации следующим образом.

 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)
...