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

时间:2016-12-24 17:12:20

标签: ios swift core-data uipickerview ios10

我正在使用CoreData,并且我试图在我的UIPickerView中使用商店和项目类型

拥有2个不同的列

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

这是我的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 个答案:

答案 0 :(得分: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
}