私はカスタム日付ピッカーを作成しようとしています。私はUIPickerView
をサブクラス化し、init(coder:)
とinit(frame:)
の両方でUIPickerViewDataSource
とUIPickerViewDelegate
を作りました:UIPickerViewのサブクラス化中にUIPickerViewDelegateメソッドが動作しない
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"
。
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のようにしたいので、カウントが異なります。 2月| 16 | 35 |紀元前。各セクションは異なる量のΔsを有する。例えば、最小の時代は2を有する。 –
'pickerView(titleForRow:)'コードを表示しますか?少なくとも定義ですか? – DonMag