簡體   English   中英

Swift-無法使PickerView庫正常工作

[英]Swift - Cannot make PickerView Library to Work

我正在嘗試將此庫集成到我的項目中

https://github.com/filipealva/PickerView

按照指示,我在界面構建器中添加了UIView並創建了與視圖的@IBOutlet連接。

這是我控制器的代碼

import UIKit
import PickerView

class SignUpStep1ViewController: UIViewController {

    @IBOutlet weak var nextBtn: UIButton?
    @IBOutlet weak var dayPicker: PickerView!

    var months = [
        "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
    ]

    override func viewDidLoad() {
        super.viewDidLoad()
        dayPicker.delegate = self
        dayPicker.dataSource = self
        configureDayPicker()
        title = "BIRTH DATE"
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.nextBtn?.layer.cornerRadius = 22.5
    }

    @IBAction func nextBtnClicked(sender: UIButton) {
        performSegue(withIdentifier: "SignUpStep2ViewController", sender: self)
    }

    fileprivate func configureDayPicker() {
        print("DayPicker Configuration")
        dayPicker.scrollingStyle = .default
        dayPicker.backgroundColor = UIColor.red
        dayPicker.translatesAutoresizingMaskIntoConstraints = false
        dayPicker.scrollingStyle = PickerView.ScrollingStyle(rawValue: 1)!
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let backItem = UIBarButtonItem()
        backItem.title = ""
        navigationItem.backBarButtonItem = backItem
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

extension SignUpStep1ViewController: PickerViewDataSource {

    func pickerViewNumberOfRows(_ pickerView: PickerView) -> Int {
        return months.count
    }

    func pickerView(_ pickerView: PickerView, titleForRow row: Int, index: Int) -> String {
        return months[index]
    }
}

extension SignUpStep1ViewController: PickerViewDelegate {

    func pickerViewHeightForRows(_ pickerView: PickerView) -> CGFloat {
        return 50.0
    }

    func pickerView(_ pickerView: PickerView, didSelectRow row: Int) {

    }

    func pickerView(_ pickerView: PickerView, didTapRow row: Int, index: Int) {

    }

    func pickerView(_ pickerView: PickerView, styleForLabel label: UILabel, highlighted: Bool) {
        if highlighted {
            label.font = UIFont.systemFont(ofSize: 25.0)
            label.textColor = view.tintColor
        } else {
            label.font = UIFont.systemFont(ofSize: 15.0)
            label.textColor = .lightGray
        }
    }
}

它顯示了在控制器中創建了IBOutlet連接,但是選擇器未在視圖中顯示,這是怎么回事?

這是情節提要視圖的屏幕截圖。

在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明

您將獲得紅色背景色,這表示正在顯示pickerview(紅色背景已在configureDayPicker方法中設置)。 我認為您沒有得到文本,因為您使用index而不是row來訪問數組中的值。 嘗試改變

func pickerView(_ pickerView: PickerView, titleForRow row: Int, index: Int) -> String {
        return months[index]
}

func pickerView(_ pickerView: PickerView, titleForRow row: Int, index: Int) -> String {
        return months[row]
}

編輯:另外,請嘗試將文本顏色設置為對比度,以確認是否實際上已加載了數據(色彩可能會將文本混合到背景中)

暫無
暫無

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

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