首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPickerView Swift 5的语法问题

UIPickerView Swift 5的语法问题
EN

Stack Overflow用户
提问于 2019-04-19 21:00:59
回答 1查看 968关注 0票数 0

我一直在研究创建UIPickerView的各种方法,每次遇到相同的问题:

我得到了错误:

类型'timeselectviewController‘不符合协议'UIPickerViewDataSource’

pickerView函数总是收到警告:

实例方法'pickerView(pickerView:titleForRow:forComponent:)‘几乎匹配协议'UIPickerViewDelegate’的可选需求'pickerView(_:titleForRow:forComponent:)‘

,这是目前为止的代码:

代码语言:javascript
复制
import UIKit

class timeselectviewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

@IBOutlet weak var gradeTextField: UITextField!
var gradePicker: UIPickerView!

let gradePickerValues = ["5. Klasse", "6. Klasse", "7. Klasse"]

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
    return gradePickerValues.count
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return gradePickerValues[row]
}

    func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int){
        gradeTextField.text = gradePickerValues[row]
        self.view.endEditing(true)
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        gradePicker = UIPickerView()

        gradePicker.dataSource = self
        gradePicker.delegate = self

        gradeTextField.inputView = gradePicker
        gradeTextField.text = gradePickerValues[0]
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-04-19 22:31:26

  1. 关于“不符合协议”的警告,这是因为协议有某些必需的方法。如果您点击警告,它将为您提供添加方法“存根”的机会:

如果选择“fix”选项,它将添加缺少的必需UIPickerViewDataSource委托方法:

显然,您必须为这些方法编写代码,但它将准确地显示缺少哪些方法以及您必须做什么。

注意,这是numberOfComponents(in:),而不是numberOfComponentsInPickerView(pickerView:)。您所拥有的似乎是旧的Swift 2语法。

  1. 关于“几乎匹配可选要求”警告: titleForRowdidSelectRow都缺少第一个参数的_ 参数标号。它们分别是: func pickerView(_ pickerView: UIPickerView,titleForRow行: Int,forComponent组件: Int) ->字符串?{.} 和 func pickerView(_ pickerView: UIPickerView,didSelectRow行: Int,inComponent component: Int) {. 通常,如果您点击警告,它甚至会给您一个选项,让Xcode修复您的方法签名。选择“.”选项。为了满足这个要求“,而不是说”.若要使此警告保持沉默“:

总之,每当您看到有关缺少协议要求和/或“几乎匹配”警告的警告时,要么尝试编译器建议的修补程序,要么重新检查协议文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55767816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档