1
UIPickerViewのフォントを変更する必要があります。また、以下に示すようにdelegateメソッドを使用しています。UIPickerViewは以前のコンポーネントビューを再利用していません
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView
{
var pickerLabel = view as? UILabel;
if (pickerLabel == nil)
{
pickerLabel = UILabel()
pickerLabel?.font = UIFont(name: (pickerLabel?.font.fontName)!, size: 15)
pickerLabel?.textAlignment = NSTextAlignment.center
}
pickerLabel?.text = myData[row]
return pickerLabel!
}
私はdocumentationを理解するとして、私はUILabelのビューを作成したら、彼らは再利用されるはずです。ただし、 "view"パラメータは常にnilです。ピッカーを回転させるたびに、新しいUILabelが作成されます。これは非効率的と思われ、 "再使用"パラメータを持つという目的を破る。
これはバグですか、どうやって動作させるべきか誤解していますか?
おかげで、
ジュリアン
関数が呼び出されたときに 'view'自体はnilですか?または、 'var pickerLabel = view as? 'の結果ですか? UILabel'は 'pickerLabel'の価値をゼロにしますか? –
ピッカーが最初に設定されているかどうかにかかわらず、ファンクションが呼び出されるたびに 'view'自体は常にnilです。 – Julian7