簡體   English   中英

Swift 4.2-PickerView不顯示內容

[英]Swift 4.2 - PickerView not showing Content

這段代碼讓我非常生氣。 我已經閱讀了成千上萬的教程和堆棧溢出注釋。

請幫我。 選取器僅包含一個空白的灰色屏幕。

代碼在這里:

GenderPickerModel.swift

    import UIKit

class GenderPickerModel:  NSObject, UIPickerViewDataSource, UIPickerViewDelegate {

    let genderPickerData: [String] = ["male", "female"]

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1;
    }

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

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

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    } 
}

並在控制器中使用:

@IBOutlet weak var gender: UITextField!  
private var genderPickerView: UIPickerView?

override func viewDidLoad() {
        super.viewDidLoad()
        loadProfile()
        prepareView()
    }

    func prepareView() {
        genderPickerView = UIPickerView.init()

        let gpModel = GenderPickerModel()

        genderPickerView?.delegate = gpModel
        genderPickerView?.dataSource = gpModel
        gender.inputView = genderPickerView;
        genderPickerView?.selectRow(0, inComponent: 0, animated: true)
        genderPickerView?.reloadAllComponents()
    }

首先,您無需在pickerview類中進行單獨的性別排序,也無需創建pickerview實例。

由此,您可以在custompickerview中查看數據源

/**
Controller code where you can create instantiate picker assign data 

*/
    class ViewController: UIViewController {

        @IBOutlet weak var textField: UITextField!            
        let genderPickerData : [String] = ["male", "female"]

        override func viewDidLoad() {
            super.viewDidLoad()

            prepareView()
        }

        func prepareView() {

            genderPickerView = UIPickerView()

            let gpModel = GenderPickerModel()

            gpModel.data = genderPickerData

            gpModel.dataSource = gpModel
            gpModel.delegate = gpModel
            textField.inputView = gpModel

        }
    }

/**

Custom pickerview class where you can handle data 

*/
import UIKit

class GenderPickerModel: UIPickerView, UIPickerViewDataSource, UIPickerViewDelegate {

    var data = [String]()

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

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

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

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM