【发布时间】:2020-10-18 14:11:00
【问题描述】:
总的来说,我是 swift 和 iOS 开发的完全初学者,所以请放轻松 :)
在我的应用程序中,我有一个水平 StackView。
在那个 StackView 中 - 我有一个 label 和一个 button,现在我想添加一个 PickerView 将从一些选项列表中填充.
我一直在谷歌搜索和阅读线程,但我得到的最接近的是让 PickerView 显示其位置(使用一些背景颜色)但 内部没有实际值。
这是我创建和自定义 StackView 组件的代码:
class SingleReportInputStackView: UIStackView {
... // creating and customizing my StackView
private func getObjects() -> (UILabel, UIButton, UIPickerView) {
let myLabel: UILabel = {
... // creating UILabel
}()
let myButton: UIButton = {
... // creating UIButton
}()
class MyPicker: NSObject, UIPickerViewDelegate, UIPickerViewDataSource {
let dataArray = ["English", "Maths", "History", "German", "Science"]
let UIPicker: UIPickerView = UIPickerView()
override init() {
super.init()
self.UIPicker.delegate = self
self.UIPicker.dataSource = self
self.UIPicker.backgroundColor = UIColor.white
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return dataArray.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
let row = dataArray[row]
return row
}
}
let myPicker = MyPicker()
return (myLabel, myButton, myPicker.UIPicker)
}
...
}
然后,我通过调用 setupSingleInput() 将这些组件添加到我的 Horizontal StackView:
class SingleReportInputStackView: UIStackView {
...
private func setupSingleInput() {
let (myLabel, myButton, myPicker) = getObjects()
self.addArrangedSubview(myLabel)
self.addArrangedSubview(myButton)
self.addArrangedSubview(myPicker)
self.translatesAutoresizingMaskIntoConstraints = false
}
...
}
正如我所说,我可以看到标签、按钮和 PickerView 的白色背景(看起来像一个空白的白色矩形)。
顺便说一句,我没有故事板(如果这还不明显的话)-我正在以编程方式创建 UI。
有人可以帮帮我吗?为什么我的数据数组没有正确填充我的 PickerView?
【问题讨论】:
标签: ios swift uikit uipickerview uistackview