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

时间:2018-12-16 07:26:14

标签: swift uipickerview

我对UIPickerView不熟悉。现在我有两个控制器,比方说控制器A和控制器B。 控制器A的标签为“苹果”,控制器B的标签为UIPickerView,其数据为[“香蕉”,“西瓜”,“草莓”]。

问题是,如果我需要将“苹果”从控制器A传递到控制器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的标题显示了三个“苹果”。显然,这不是我想要的。我需要显示“苹果”,但还需要保留[“香蕉”,“西瓜”,“草莓”]的数组数据。因为我想将UIPickerView的值改回控制器A,所以必须保留数组数据,否则只能选择“ apple”。

有人可以帮我这个忙吗?谢谢。

1 个答案:

答案 0 :(得分:0)

简单地,将“苹果” 附加到您的数据源,然后重新加载选择器。

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

如果要在特定位置插入苹果,请使用插入而不是附加。

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

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

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