如何在 swift 中为 UIPickerview 的 2 组件数组添加新元素
Posted
技术标签:
【中文标题】如何在 swift 中为 UIPickerview 的 2 组件数组添加新元素【英文标题】:how to add a new element to a 2 component array for UIPickerview in swift 【发布时间】:2017-08-13 16:23:10 【问题描述】:当我尝试使用 .count 添加 newItem 时,没有任何显示。当我使用它替换“汽车”时,我在pickerview中看不到它,而且我需要在 newItem 出现之前上下滚动几次。
var picker1 = String()
var picker2 = String()
var pickerViewArray = [["Items", "car"], ["Action", "Turn", "Hit", "Pull", "Scrape"]]
func numberOfComponents(in pickerView: UIPickerView) -> Int
return pickerViewArray.count
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
return pickerViewArray[component].count
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
return pickerViewArray[component][row]
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
picker1 = pickerViewArray[0] [pickerView.selectedRow(inComponent: 0)] + ""
picker2 = pickerViewArray[1] [pickerView.selectedRow(inComponent: 1)] + ""
func addItemsToArray ()
stringWall = "Wall"
addItemAtIndex = pickerViewArray[0].count
pickerViewArray[0].insert(newItem, at: addItemAtIndex)
allRoomArray[arraySelector][wallButton] = stringWall
pickingRooms()
print(newItem)
【问题讨论】:
我认为人们不会以这种方式做你想做的事。通常,我会创建一个带有自定义UITableViewCell
的UITableView
来实现动态列表。 UIPickerView
是完全预定义的,没有那么多动态视图。
感谢您的回答。你给出的最好的建议是它不是为了做我想做的事。
【参考方案1】:
我不认为人们以这种方式做你想做的事。通常,我会创建一个带有自定义UITableViewCell
的UITableView
来实现动态列表。 UIPickerView
是完全预定义的,没有那么多动态视图。
而对于您的代码,如果您真的需要您的 UIPickerView
如此动态,我会说
更改数据源后添加
self.pickerView.setNeedsLayout()
,pickerViewArray
适合您的情况。
我在 XCode9 beta3 上对其进行了测试,目标是 ios 8.0,使用 Swift 3。
【讨论】:
以上是关于如何在 swift 中为 UIPickerview 的 2 组件数组添加新元素的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中为选定的 UIPickerView 行设置动画背景颜色
如何在具有多个组件的 UIPickerView 中为特定组件添加图像?
如何在 UIPickerView 中为两个不同的组件显示两种不同的对象类型?