Показывать UIPickerView при нажатии кнопки - PullRequest
0 голосов
/ 14 декабря 2018

enter image description here

Я хочу открыть UIPickerView по нажатию этой кнопки.Я создал эту кнопку, и теперь, когда пользователь нажимает на нее, я хочу открыть UIPickerView.Я видел много учебных пособий в Интернете, но все они показываются с:

textfield.inputview = uipker // i don't want to use extfield

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

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Если вы хотите сделать это из Интерфейсного Разработчика, то вы можете добавить UIPickerView в вашу storyBoard и изначально скрыть это UIPickerView, и когда ваша кнопка нажата, отобразите его.

Если вы хотите сделать это с помощьюкодирование, то вы можете попробовать это.

Определите это как глобальное.

var toolBar = UIToolbar()
var picker  = UIPickerView()

Добавьте ниже код внутри вашего действия нажатия кнопки.Я добавил кнопку Done на панели инструментов, чтобы закрыть окно выбора.

Примечание: Я пишу весь код в действии кнопки, если вы не хотите этого делать, просто напишите весь код в viewDidLoad и напишите только эти строки в действии вашей кнопки self.view.addSubview(picker) и self.view.addSubview(toolBar)

@IBAction func YOUR_BUTTON__TAP_ACTION(_ sender: UIButton) {
    picker = UIPickerView.init()
    picker.delegate = self
    picker.backgroundColor = UIColor.white
    picker.setValue(UIColor.black, forKey: "textColor")
    picker.autoresizingMask = .flexibleWidth
    picker.contentMode = .center
    picker.frame = CGRect.init(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 300)
    self.view.addSubview(picker)

    toolBar = UIToolbar.init(frame: CGRect.init(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 50))
    toolBar.barStyle = .blackTranslucent
    toolBar.items = [UIBarButtonItem.init(title: "Done", style: .done, target: self, action: #selector(onDoneButtonTapped))]
    self.view.addSubview(toolBar)
}

На кнопке Готово вы можете удалить панель инструментов, а также PickerView.

@objc func onDoneButtonTapped() {
    toolBar.removeFromSuperview()
    picker.removeFromSuperview()
}

Делегировать методыUIPickerView

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return YOUR_DATA_ARRAY.COUNT
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    print(YOUR_DATA_ARRAY[row])
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    print(YOUR_DATA_ARRAY[row])
}
0 голосов
/ 14 декабря 2018

Просто скрой / покажи uipickerview.Добавьте сборщик в качестве подпредставления основного вида в раскадровке, но держите его скрытым.При нажатии на эту кнопку покажите ее.

Добавьте панель инструментов с кнопкой «Готово», чтобы снова скрыть средство выбора. Вот ссылка для этого

...