ココアタッチ:UIPickerView viewForRowがクラッシュ
-
20-09-2019 - |
質問
私はそれのデリゲートで、私は、行のビューをカスタマイズしようとしている、UIPickerViewを持っています。私は、3.1 SDKを使用しています。
だから私は持っているデリゲートでます:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
// view.backgroundColor = [UIColor redColor];
return view;
}
アップルのドキュメントから: 以前使用ビュー(ビューパラメータ)が適切である場合は、次の点を返します。あなたが別のビューを返した場合は、以前使用ビューがリリースされます。ピッカービューは、行の矩形で返されるビューを中心
私はこれを実行すると、、私のUIPickerViewコントロールは、その中の任意のアイテムを持っていない、と短い後にクラッシュしながら。 私は(委任のためのオプションである)、この特定のメソッドを削除すると、私はtitleForRowメソッドを介して設定されたラベルを見ることができ、そしてそれはもはやクラッシュしなくなります。
私はココア(とココアタッチ)にかなり新しいよ、私はview.backgroundColorの事がうまくいくわからないんだけど、(私はほとんどの行のためにとにかくしなければならない)無修正古いビューを返す場合でも、私がクラッシュしますアプリます。
私が何か間違ったことをやっているか?
解決
はい、あなたが実装する の–pickerView:titleForRow:forComponent:
または–pickerView:viewForRow:forComponent:reusingView:
、どちらか一方だけ。何が起こっていることは、それはあなたの–pickerView:titleForRow:forComponent:
を使用しているので、それはあなたの–pickerView:viewForRow:forComponent:reusingView:
を呼び出していないことです。その行には、「以前使用ビュー」がなかったので、あなたがreusingView:
パラメータを戻ってきているが、それは最初の時間をnil
されます。