Подтвердить что ты не робот

Добавить UITextField в UIToolbar

Я попробовал это, чтобы добавить UITextField в UIToolbar, но получил ошибку времени выполнения, поскольку: [UITextField view]: непризнанный селектор, отправленный экземпляру...

[toolbar setItems:[NSArray arrayWithObjects:textField, nil]];

панель инструментов - это экземпляр UIToolbar, а textField - это экземпляр UITextField.

4b9b3361

Ответ 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.

Надеюсь, это поможет!