PickerView中的内容未显示

时间:2018-12-04 09:02:39

标签: ios swift

我是Swift编程的新手。当我想显示2种不同内容的2种选择器时出现问题。但是它显示(?)而不是内容。

请参见下面的屏幕截图

enter image description here

感谢您的帮助!

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]
    }
}

2 个答案:

答案 0 :(得分:1)

首先检查您的pickerView DataSourceDelegate是否正确连接,然后可以通过比较如下所示的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
}
相关问题