第一次显示pickerView
时,我无法更改所选视图。
此外,我尝试在didSelectRow
中的selectRow
方法之后直接调用viewDidLoad
委托方法,但是什么也没发生。
当我正常滑动选择器时,它会按预期方式工作-所选项目已按照didSelectRow
方法中的说明进行了更改。
但是我无法弄清楚如何在没有用户交互的情况下首次更改所选视图。
// start - pikerView
let viewStart = self.start.view(forRow: self.startInex, forComponent: 0)
viewStart?.backgroundColor = .red
答案 0 :(得分:0)
与其他评论一致,我不确定您为什么会遇到问题,但这是一个简单的实现,显示了创建3列5行选择器,然后将所有列(组件)设置为第3列行。
class MyVC: UIViewController{
let pickerRows = 5
let pickerColumns = 3
override func viewDidLoad() {
super.viewDidLoad()
let picker = UIPickerView(frame: CGRect(x:0, y:100, width: 400, height: 400))
view.addSubview(picker)
view.backgroundColor = .systemBackground
picker.dataSource = self
picker.delegate = self
(0..<pickerColumns).map{picker.selectRow(3, inComponent: $0, animated: true)}
}
}
extension MyVC: UIPickerViewDelegate, UIPickerViewDataSource {
public func numberOfComponents(in pickerView: UIPickerView) -> Int {
pickerColumns
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
pickerRows
}
public func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
switch (row, component) {
case (_, 0): return "Row \(row)"
case (_, _): return "\(component) - \(row)"
}
}
}