【问题标题】:Can't set pickerView titleForRow as (String?, String?)无法将 pickerView titleForRow 设置为 (String?, String?)
【发布时间】:2016-12-24 17:12:20
【问题描述】:

我正在使用 CoreData,我试图在我的 UIPickerView 中有 2 个不同的列,其中包含 Stores 和 Item Type

当我运行它时,项目在“那里”,但它们显示为“?”

这是我的 titleForRow 函数的代码:

   func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> (String?, String?) {
    //title
    let store = stores[row]
    let itemType = itemTypes[row]

    // select store out of array of stores
    return (store.name, itemType.type)
}

需要注意的是 Xcode 给我一个警告说:

实例方法 'pickerVIew(titleForRow:forComponent:)' 几乎匹配 可选要求 'pickerView(titleForRow:forComponent:)' 协议 UIPickerView

【问题讨论】:

    标签: ios swift core-data uipickerview ios10


    【解决方案1】:

    你只能返回String 类型,不能返回元组。如果要添加两列,则需要设置

    pickerView.numberOfComponents = 2
    

    并检查component 参数,如:

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return component == 0 ? stores[row].name : itemTypes[row].type
    }
    

    【讨论】:

    • 有效!非常感谢
    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2018-09-06
    • 2016-02-15
    相关资源
    最近更新 更多