2017-01-06 5 views
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が作成されます。これは非効率的と思われ、 "再使用"パラメータを持つという目的を破る。

これはバグですか、どうやって動作させるべきか誤解していますか?

おかげで、

ジュリアン

+0

関数が呼び出されたときに 'view'自体はnilですか?または、 'var pickerLabel = view as? 'の結果ですか? UILabel'は 'pickerLabel'の価値をゼロにしますか? –

+0

ピッカーが最初に設定されているかどうかにかかわらず、ファンクションが呼び出されるたびに 'view'自体は常にnilです。 – Julian7

答えて

関連する問題