我想根据SegmentedControll在TextField中创建选择器视图。
刚开始使用某些if函数进行编码...但是由于func不返回Int,所以无法正常工作。
func functionOne() {
createJobToolBar()
aufgabenPicker = UIPickerView()
aufgabenPicker?.delegate = self
aufgabenPicker?.dataSource = self
jobTF.inputView = aufgabenPicker
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if categorySC.isEnabledForSegment(at: 1) {
return jobsHaus.count
}else if categorySC.isEnabledForSegment(at: 2) {
return jobsGarten.count
}else if categorySC.isEnabledForSegment(at: 3) {
return jobsBetreuung.count
}else if categorySC.isEnabledForSegment(at: 4) {
return jobsSonstiges.count
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if categorySC.isEnabledForSegment(at: 1) {
return jobsHaus[row]
}else if categorySC.isEnabledForSegment(at: 2) {
return jobsGarten[row]
}else if categorySC.isEnabledForSegment(at: 3) {
return jobsBetreuung[row]
}else if categorySC.isEnabledForSegment(at: 4) {
return jobsSonstiges[row]
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if categorySC.isEnabledForSegment(at: 1) {
jobTF.text = jobsHaus[row]
}else if categorySC.isEnabledForSegment(at: 2) {
jobTF.text = jobsGarten[row]
}else if categorySC.isEnabledForSegment(at: 3) {
jobTF.text = jobsBetreuung[row]
}else if categorySC.isEnabledForSegment(at: 4) {
jobTF.text = jobsSonstiges[row]
}
}
由于缺少返回值而导致的当前错误消息:“函数中缺少返回值,期望返回'Int'”
在func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int)
方法中,您基于多个if ... else
语句返回一个值。这些可能涵盖了您所有可能的情况,但编译器无法推断出这种情况,并且可以看到所有四个检查均失败并因此不返回任何值的可能性。
有几种解决方法:
if
出现致命错误后崩溃//cut earlier code for brevity
else if categorySC.isEnabledForSegment(at: 4) {
return jobsSonstiges.count
}
fatalerror("Invalid segment logic")
}
//cut earlier code for brevity
else if categorySC.isEnabledForSegment(at: 4) {
return jobsSonstiges.count
}
return 999
}
if
检查,然后返回该值: func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if categorySC.isEnabledForSegment(at: 1) {
return jobsHaus[row]
}else if categorySC.isEnabledForSegment(at: 2) {
return jobsGarten[row]
}else if categorySC.isEnabledForSegment(at: 3) {
return jobsBetreuung[row]
}else {
return jobsSonstiges[row]
}
}
至少在开发过程中,我的偏好是选项1,这样我就可以确定自己是否犯了逻辑错误。