我对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”。
有人可以帮我这个忙吗?谢谢。
答案 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)
}