私はUIPickerView主に学習目的でカスタム置換クラスを構築しようとしていますが、開発中のアプリケーション内にこれを実装することを目的としています。私は自分のアプリケーションのUIに多くの時間と労力を費やしてきましたが、今ではデフォルトUIPickerViewが適切に適合していません。
私はこのドリブルUIPickerViewが本当に滑らかに見える日付/時刻ピッカーのモックアップを見ましたが、大きなハッキングなしでこれを大幅にカスタマイズできる地獄のチャンスはないことに気づきました。
たくさんの読書と調査の結果、私が最初に想定したようなプレーンではなく、コンポーネントにsをUIPickerView使用していることがわかりました。これは2つの理由で混乱します:UITableViewUIScrollView
sのカスタマイズUITableViewCellは、derriereの大きな問題です。それは大変な作業ではなく、面倒で、必要な結果が得られることはめったにありません。オーバーヘッドはほとんどありませんが、どういうわけかUIPickerViewこれをうまくやってのけることができます。コンポーネントの各行は、そのUITableViewCellStyleDefaultためのカスタムビューで使用するだけcontentViewだと思いますが、仮定について彼らが何を言っているかはご存知でしょう。
私を失望させている2番目のことは、プロトコルにUIPickerView準拠しているが、UITableViewDataSourceプロトコルには準拠していないことUITableViewDelegateです。デリゲートが正しい高さを提供する責任があるため、これは少し奇妙に思え– tableView:heightForRowAtIndexPath: UIPickerViewますが、コンポーネントのサイズを設定することはできます– pickerView:rowHeightForComponent:
これに沿って、テーブルビューを利用することも奇妙な選択のように思われます。これらは、スクロールビューのように、指定された行にネイティブに「スナップ」しないためpagingEnabledです。
UIPickerViewデフォルトが前述のデリゲートに準拠していない理由を誰かが説明できますか?UIScrollView代わりにカスタムピッカーを実装する方が簡単ですか、それともUITableView必要な機能を提供する必要がありますか?