質問

私はそれのデリゲートで、私は、行のビューをカスタマイズしようとしている、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されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top