首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PickerView - ViewController不符合UIPickerViewDataSource协议

PickerView - ViewController不符合UIPickerViewDataSource协议
EN

Stack Overflow用户
提问于 2016-12-01 19:09:33
回答 2查看 1.4K关注 0票数 0

我的PickerView有点麻烦。首先,无论我做什么,我的ViewController都不接受UIPickerViewDataSource。其次,PickerView只显示第一行。我需要它来显示两行,并在一个名为TextField的学校中显示

我做错什么了?

在我发疯之前有人能帮我吗?

代码语言:javascript
复制
enter code here
    private let typeComponent = 0
    private let areaComponent = 1
    private let typeOption = ["HighSchool of", "College of", "University of"]
    private let areaOption = ["Miami", "Los Angeles", "New York"]

        // PickerView - School  2 af 5
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 2
    }
    // PickerView - School  3 af 5
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if component == typeComponent {
            return typeOption.count
        } else {
            return areaOption.count
    }
    }
    // PickerView - School  4 af 5
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if component == typeComponent {
            return typeOption[row]
        } else {
        return areaOption[row]

    }
    }
    // PickerView - School  5 af 5
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
//        school.text = pickOption[component][row]

        let typeRow = pickerView.selectedRow(inComponent: (0))
        let areaRow = pickerView.selectedRow(inComponent: (1))
        let type = typeOption[typeRow]
        let area = areaOption[areaRow]
        school.text = "\(type)\(area)"
    }


    override func viewDidLoad() {
        super.viewDidLoad()



        //Placeholder TextView Interest and about 1 ag 3
        Interest.delegate = self
        Interest.text = "What are your interests..."
        Interest.textColor = UIColor.lightGray

        about.delegate = self
        about.text = "Tell about yourself..."
        about.textColor = UIColor.lightGray

        //PickerView School  1 af 5
        let pickerView = UIPickerView()
        pickerView.delegate = self
        pickerView.dataSource = self
        pickerView.backgroundColor = UIColor.white
        school.inputView = pickerView
EN

回答 2

Stack Overflow用户

发布于 2016-12-01 19:17:15

实现UIPickerViewDataSource所需的所有方法。如果您不符合UIPickerViewDataSource,它将给您错误。

方法,这些方法是在一致性类中实现所需的

SWIFT2.0

代码语言:javascript
复制
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int

SWIFT3.0

代码语言:javascript
复制
func numberOfComponents(in pickerView: UIPickerView) -> Int
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
票数 1
EN

Stack Overflow用户

发布于 2016-12-01 19:19:37

确保类符合UIPickerViewDataSource协议,如下所示:

代码语言:javascript
复制
class YourViewController: UIPickerViewDataSource {
//
}

更新:

对于Swift 3,您必须使用以下数据源函数:

代码语言:javascript
复制
func numberOfComponents(in pickerView: UIPickerView) -> Int{
}

而不是你用的那个。

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

https://stackoverflow.com/questions/40918551

复制
相关文章

相似问题

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