ios - UIPickerViewDelegate 方法在子类化 UIPickerView 时不起作用

标签 ios swift uikit

我正在尝试制作自定义日期选择器。我已经将 UIPickerView 子类化,并在 init(coder:) 中将其设为 UIPickerViewDataSourceUIPickerViewDelegate初始化(框架:):

class XKPickerView: UIPickerView, UIPickerViewDataSource, UIPickerViewDelegate {

override init(frame: CGRect) {
    super.init(frame: frame)
    self.dataSource = self
    self.delegate = self
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!
    self.dataSource = self
    self.delegate = self
}

(...)
}

但是委托(delegate)函数 pickerView(titleForRow:) 没有在 View 加载时被调用。我想,我在 init() 中遗漏了一些东西,但是什么?

添加:我正在使用 Storyboard构建 View 。

添加 2:pickerView 代码还有很多假人,但即使是简单的 return "abc" 通常也不会起作用,因为函数本身没有被调用(double使用 print() 和调试器检查)。

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, 
                forComponent component: Int) -> String? {
    switch component {
    case 0: // day label
        return String(row + 1)
    case 1: // month label (localized)
        return "0"
    case 2: // century label
        return "0"
    case 3: // year of the century label
        return String(row + 1)
    case 4: // era label (localized)
        return "0"
    default:
        return nil
    }
}

最佳答案

不确定你的尝试是怎么回事,但我只是这样做了,而且没有问题......

class MyPickerView: UIPickerView, UIPickerViewDataSource, UIPickerViewDelegate {

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.dataSource = self
        self.delegate = self
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        self.dataSource = self
        self.delegate = self
    }

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

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

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return "Row \(row)"
    }

}

那是整个类(class)。

关于ios - UIPickerViewDelegate 方法在子类化 UIPickerView 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42817764/

相关文章:

ios - 动画停止时如何使动画速度变慢

iphone - IOS 低功耗蓝牙连接间隔

objective-c - 为什么当 ARC 对项目打开但对特定文件 objective-c 关闭时,dealloc 不会被调用?

swift - 为什么 Swift 的 String API 中包含 unicode 作为编码?

ios - Swift 中的多维对象数组错误?

iphone - 使用多个图像缩放 UIScrollView

iphone - 设备和模拟器上的方向非常间歇

ios - 动态改变 UITableViewCell 文本的 textColor

swift - “NSInputStream”没有名为 'setDelegate' 的成员

ios - 如何交互式收缩和增长 Table View Cell?