Добавить UITextField в UIToolbar
Я попробовал это, чтобы добавить UITextField в UIToolbar, но получил ошибку времени выполнения, поскольку: [UITextField view]: непризнанный селектор, отправленный экземпляру...
[toolbar setItems:[NSArray arrayWithObjects:textField, nil]];
панель инструментов - это экземпляр UIToolbar, а textField - это экземпляр UITextField.
Ответы
Ответ 1
items
of UIToolbar
должен иметь тип UIBarButtonItem
. Используйте initWithCustomView:
для создания элемента панели инструментов, содержащего ваше текстовое поле.
UIBarButtonItem *textFieldItem = [[UIBarButtonItem alloc] initWithCustomView:textField];
toolbar.items = @[textFieldItem];
Ответ 2
Ответ на omz выше ответил на мой вопрос в 2017 году, но вот обновление для iOS 10 и Swift 3. Я собираюсь создать UIToolbar
, который имеет UITextField
и .flexibleSpace
в левой и правой сторонах, чтобы центрировать текстовое поле на панели инструментов.
let toolbar = UIToolbar()
let flexibleBarButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
let textfield = UITextField()
let textfieldBarButton = UIBarButtonItem.init(customView: textfield)
// UIToolbar expects an array of UIBarButtonItems:
toolbar.items = [flexibleBarButton, textfieldBarButton, flexibleBarButton]
view.addSubview(toolbar)
Конечно, вы можете укоротить приведенный выше код и добавить кадр UIToolbar
и т.д., но вышеприведенный должен быть более "разборчивым" примером специально добавленного UITextField
как UIBarButtonItem
.
Надеюсь, это поможет!