我是Swift编程的新手。当我想显示2种不同内容的2种选择器时出现问题。但是它显示(?)而不是内容。
请参见下面的屏幕截图
感谢您的帮助!
let fruit = ["apple", "orange", "watermelon", "banana", "peach", "strawberry"]
let food = ["rice","bread","spagheti","milk"]
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if (pickerView.tag == 1) {
return fruit.count
}
else {
return food.count
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if (pickerView.tag == 1) {
return fruit[row]
}
else {
return food[row]
}
}
答案 0 :(得分:1)
首先检查您的pickerView DataSource
和Delegate
是否正确连接,然后可以通过比较如下所示的pickerView有条件地加载数据。
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView == YOUR_FIRST_PICKER {
return fruit.count
}
else {
return food.count
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == YOUR_FIRST_PICKER {
return fruit[row]
}
else {
return food[row]
}
}
答案 1 :(得分:0)
我认为您尚未设置选择器的代表和数据源。
首先将这些协议添加到您的ViewController子类中
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource
然后在viewDidLoad
中将选择器的委托和数据源设置为self
override func viewDidLoad() {
super.viewDidLoad()
pickerView1.delegate = self
pickerView1.dataSource = self
pickerView2.delegate = self
pickerView2.dataSource = self
}