在Xcode Swift中使用PickerView获取此代码中的错误:
func pickerView(pikcerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return pickerDate [row] // Cannot convert return expression of type '[String]' to return type 'String?'
}
PickerView的完整代码:
@IBOutlet weak var inputpickerdate: UIPickerView!
// var pickerList = ["test","test2","test3"]
var pickerDate: [[String]] = [[String]] ()
//[pickerModel] ()
var selected: String?
override func viewDidLoad() {
super.viewDidLoad()
self.inputpickerdate.delegate = self
self.inputpickerdate.dataSource = self
pickerDate = [["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"], ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"]]
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 3
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerDate.count
}
func pickerView(pikcerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return pickerDate [row]
}
我正在尝试创建一个UIPickerView,其中包含周,日和月的日期,例如,3月2日星期一
但是,我已经这样做了,并得到了
错误:无法将类型为'[String]'的返回表达式转换为返回类型'String?'
在我的func titleForRow
,不知道为什么我得到这个。
首先,你使用了错误的titleForRow
委托方法。它应该是:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
接下来你需要更换
return pickerDate [row]
同
return pickerDate[component][row]
你的方法将是:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerDate[component][row]
}
你的选择器看起来像:
你有一份清单。
[]
- >一个清单。
[[]]
- >列表清单。
您将返回一个列表[]
而不是String?
。在你的情况下,你必须使用这样的东西:
func pickerView(pikcerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerDate[component][row] // if component starts with 0.
}
当然,你必须制定一个逻辑来获得正确的领域。
你将返回Array = return pickerDate [row]
的字符串,它应该是一个单独的字符串。