gpt4 book ai didi

swift - 是否可以将 UIPickerView 与依赖于(例如)UISegmentedControll 的 if 函数一起使用?

转载 作者:行者123 更新时间:2023-11-30 10:34:05 25 4
gpt4 key购买 nike

我想根据 SegmentedControll 在 TextField 中创建选取器 View 。

刚刚开始使用一些 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 返回一个值声明。这些可能涵盖所有可能的场景,但编译器无法推断这一点,并且可以看到所有四项检查都失败的可能性,因此不返回任何值。

有几种方法可以解决这个问题:

  1. 在最后一个 if 放入 fatalError 后崩溃
//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,以便我找出是否犯了逻辑错误。

    关于swift - 是否可以将 UIPickerView 与依赖于(例如)UISegmentedControll 的 if 函数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58456894/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com