如何在不使用UITextField的情况下将UIToolbar添加到UIPickerView?

时间:2017-02-04 08:35:07

标签: swift

我使用了UIPickerView而没有UITextField。用户点击按钮后,将显示UIPickerView

无论如何,我不知道如何解雇UIPickerView。我曾尝试将inputAccessoryView设置为UIToolbar,但编译器表示它只是获取属性。

我的代码:

    let toolbar = UIToolbar()
    toolbar.barStyle = UIBarStyle.default
    toolbar.isTranslucent = true
    toolbar.sizeToFit()

    let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(RegisterViewController.pickerDoneButton))
    let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: self, action: nil)
    let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(RegisterViewController.pickerCancelButton))

    toolbar.setItems([cancelButton, spaceButton, doneButton], animated: true)
    toolbar.isUserInteractionEnabled = true

    pickerView.inputAccessoryView = toolbar
  

错误:无法分配给属性:'inputAccessoryView'是一个只用属性

enter image description here

2 个答案:

答案 0 :(得分:4)

尝试将子视图添加到UIPickerView

答案 1 :(得分:1)

似乎UIPickerView不允许其子级接收触摸事件。如果你想在没有文本字段的情况下将工具栏添加到pickerview,你可以创建一个顶级容器UIView来保存工具栏和选择器视图,如下所示:

let picker = UIView(frame: CGRect(x: 0, y: view.frame.height - 260, width: view.frame.width, height: 260))

// Toolbar
let btnDone = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.monthdoneButtonAction))
let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(self.cancelClick))

let barAccessory = UIToolbar(frame: CGRect(x: 0, y: 0, width: picker.frame.width, height: 44))
barAccessory.barStyle = .default
barAccessory.isTranslucent = false
barAccessory.items = [cancelButton, spaceButton, btnDone]
picker.addSubview(barAccessory)

// Month UIPIckerView
monthPicker = UIPickerView(frame: CGRect(x: 0, y: barAccessory.frame.height, width: view.frame.width, height: picker.frame.height-barAccessory.frame.height))
monthPicker.delegate = self
monthPicker.dataSource = self
monthpickerData = ["January","February","March","April","May","June","July","August","September","October","November","December"]
monthPicker.backgroundColor = UIColor.white
picker.addSubview(monthPicker)