无法将 pickerView titleForRow 设置为 (String?, String?)

Posted

技术标签:

【中文标题】无法将 pickerView titleForRow 设置为 (String?, String?)【英文标题】:Can't set pickerView titleForRow as (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

【问题讨论】:

【参考方案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

【讨论】:

有效!非常感谢

以上是关于无法将 pickerView titleForRow 设置为 (String?, String?)的主要内容,如果未能解决你的问题,请参考以下文章

无法在 -pickerView:accessibilityLabelForComponent: 方法中获取 pickerView.tag

无法在 Pickerview 中设置 inputAccessoryView 工具栏

Swift字典到数组以填充pickerView

关闭键盘无法与 PickerView 一起使用

PickerView 在黑色背景下不可见

无法通过 pickerView 从 plist 检索文本以在 UIScrollView 内的 UITextView 中滚动