首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift -无法使PickerView库工作

Swift -无法使PickerView库工作
EN

Stack Overflow用户
提问于 2017-05-03 06:05:42
回答 1查看 85关注 0票数 0

我正在尝试将这个库集成到我的项目中。

https://github.com/filipealva/PickerView

按照指示,我在接口构建器中添加了一个UIView,并创建了到视图的@IBOutlet连接。

这是我的控制器的代码

代码语言:javascript
复制
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连接是在控制器中创建的,但是选择器没有显示在视图中,这里发生了什么错误?

下面是故事板视图的截图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-03 08:01:43

您正在获得红色背景颜色,这意味着正在显示选择视图(在configureDayPicker方法中设置红色背景)。我认为您没有得到文本,因为您使用的是index而不是row来访问数组中的值。试着改变

代码语言:javascript
复制
func pickerView(_ pickerView: PickerView, titleForRow row: Int, index: Int) -> String {
        return months[index]
}

代码语言:javascript
复制
func pickerView(_ pickerView: PickerView, titleForRow row: Int, index: Int) -> String {
        return months[row]
}

编辑:,尝试将文本颜色设置为对比,以确认数据是否正在加载(色调颜色可能是将文本混合到背景中)。

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

https://stackoverflow.com/questions/43752233

复制
相关文章

相似问题

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