将标签字符串数据传递给 UIPickerView

Pass label string data to UIPickerView

我不熟悉UIPickerView。现在我有两个控制器,比如说控制器 A 和控制器 B。 控制器 A 有一个名为 "apple" 的标签,控制器 B 有一个 UIPickerView,数据为 ["banana","watermelon","strawberry"].

问题是,如果我需要将"apple"从Controller A传递给Controller B并在UIPickerView上显示,我应该怎么做?

我尝试在控制器 B 中使用 titleForRow 函数,如下所示。

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    fruitData[row] = self.data.name ?? ""
    return fruitData[row]
}

data.name 就是我之前提到的 "apple"。 我完成后,pickerView的标题显示三个"apple"。显然,这不是我想要的。我需要"apple"显示,还需要保留["banana"、"watermelon"、"strawberry"]的数组数据。因为我想将 UIPickerView 的值更改回控制器 A,所以我必须保留数组数据,否则我只有 "apple" 作为选择。

有人可以帮我解决这个问题吗?谢谢。

简单地说,将"apple"附加到您的数据源,然后重新加载选择器。

fruitData.append(data.name)
yourPickerView.reloadAllComponents()

如果你想在特定位置插入苹果,使用插入而不是追加。

fruitData.insert("apple", at: 0)

或者更好的办法是将水果插入正确的位置。看到你的升序了。

if let index = fruitData.firstIndex(where: { data.name < [=12=] }) {
    fruitData.insert(data.name, at: index)
} else {
    fruitData.append(data.name)
}