如何在 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)

【问题讨论】:

我认为人们不会以这种方式做你想做的事。通常,我会创建一个带有自定义UITableViewCellUITableView 来实现动态列表。 UIPickerView 是完全预定义的,没有那么多动态视图。 感谢您的回答。你给出的最好的建议是它不是为了做我想做的事。 【参考方案1】:

我不认为人们以这种方式做你想做的事。通常,我会创建一个带有自定义UITableViewCellUITableView 来实现动态列表。 UIPickerView 是完全预定义的,没有那么多动态视图。

而对于您的代码,如果您真的需要您的 UIPickerView 如此动态,我会说

更改数据源后添加self.pickerView.setNeedsLayout()pickerViewArray 适合您的情况。

我在 XCode9 beta3 上对其进行了测试,目标是 ios 8.0,使用 Swift 3。

【讨论】:

以上是关于如何在 swift 中为 UIPickerview 的 2 组件数组添加新元素的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中为选定的 UIPickerView 行设置动画背景颜色

如何在具有多个组件的 UIPickerView 中为特定组件添加图像?

如何在 UIPickerView 中为两个不同的组件显示两种不同的对象类型?

如何禁用 UIPickerView (Swift)?

Swift:点击 UITextField 时如何显示 UIPickerView

如何使用 Swift 3 UIPickerView 引用多行?