Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios PickerView中的内容未显示_Ios_Swift - Fatal编程技术网

Ios PickerView中的内容未显示

Ios PickerView中的内容未显示,ios,swift,Ios,Swift,我是Swift编程新手。当我想用2个不同的内容显示2个不同的选择器时,我遇到了问题。但它显示(?)而不是内容 请看下面的截图 谢谢你的帮助 let fruit = ["apple", "orange", "watermelon", "banana", "peach", "strawberry"] let food = ["rice","bread","spagheti","milk"] func numberOfComponents(in pickerView: UIPickerView)

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

首先检查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]
    }
}

我认为您还没有设置选择器的委托和数据源

首先将这些协议添加到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
}

确保您设置了
datasource
delegate
我已经设置好了。@fnsmp,您在评论中明确提到您已经将
delegate
datasource
设置到您的PickerView,那么您怎么能接受这个答案呢?