Swift - кнопка «Выполнено» на панели инструментов не отображается в подпредставлении UIPickerView - PullRequest
0 голосов
/ 18 марта 2019

Я новичок в Swift и пытаюсь узнать UIPickerView, который сделал кнопку, чтобы закрыть после выбора в представлении выбора.У меня есть следующий код, чтобы добавить панель инструментов и кнопку «Готово» в палитре в качестве панели инструментов в подпредставлении.Он отображается в виде пустой черной панели инструментов (прикрепленный скриншот) enter image description here

let toolBar = UIToolbar()
toolBar.barStyle = .black
toolBar.sizeToFit()
let doneBtn = UIBarButtonItem.init(title: "Done", style: .plain, target: self, action: #selector(self.closePicker))
toolBar.items = [doneBtn]
toolBar.isUserInteractionEnabled = true
picker.addSubview(toolBar) 

Picker - это выход для UIPickerView в моем контроллере.Что я делаю неправильно?Я ссылался на другие вопросы, но они, похоже, не решают мою проблему.Есть предложения?

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Вы не должны добавлять toolBar как subView пикара.

Вы должны установить toolBar как inputAccessoryView textField.

Когда я искал эту проблему, я понял, что общееспособ (также самый простой способ) получить то, что вы хотите, это Использование фиктивного textField .

Это означает создание textField в точном кадре кнопки и скрытие его, когда пользователь касается кнопки, сделатьtextField firstResponder.

@IBAction func pickerButtonClicked(_ sender: Any) {
    self.pickerViewTextField.becomeFirstResponder
}
0 голосов
/ 18 марта 2019

Вы не правы в этой строке:

picker.addSubview(toolBar)

Пикер не должен иметь никаких подпредставлений - он сам по себе всеобъемлющий, и в нем нет места для размещения чего-либо дополнительно.

Вместо этого вам нужно добавить и сборщик, и панель инструментов на одном экране и выровнять их рядом друг с другом

let toolBar = UIToolbar()
...configure your toolbar here...
guard let superview = picker.superview else { return }
superview.addSubview(toolBar)
toolBar.translateAutoresizingMaskIntoConstraints = false
NSLayoutConstraints.activate([
    toolBar.topAnchor.constraint(equalTo: superview.topAnchor),
    toolBar.leftAnchor.constraint(equalTo: superview.leftAnchor),
    toolBar.rightAnchor.constraint(equalTo: superview.rightAnchor),
    toolBar.bottomAnchor.constraint(equalTo: picker.topAnchor)
])
...