我正在嘗試製作自定義日期選擇器。我子類UIPickerView
和兩個init(coder:)
和init(frame:)
使其UIPickerViewDataSource
和UIPickerViewDelegate
:UIPickerViewDelegate方法不會在執行子類化時執行UIPickerView
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
}
(...)
}
但委託功能pickerView(titleForRow:)
未在該視圖負載調用。我想,我在init()
中錯過了一些東西,但是什麼?
添加:我正在使用故事板構建視圖。
添加2:pickerView代碼有很多假人呢,但一般不採取行動,甚至簡單return "abc"
,因爲函數本身並沒有被調用(雙用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
}
}
你確定你設置了行數嗎?如果它爲零,則不會調用該方法。 –
是的,我做了,計數是不同的,因爲我希望選擇器像21 |二月| 16 | 35 |公元前。每個部分都有不同數量的s,例如最少代表時代有兩個。 –
顯示你的'pickerView(titleForRow:)'代碼?或者至少是這個定義? – DonMag