UIPickerView でサブビューを含むビューを再利用しようとしています:
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view
{
UILabel* label = nil;
if (view == nil) {
view = [[UIView alloc] init];
label = [[UILabel alloc] init];
[view addSubview:label];
}
if (label == nil) {
label = view.subviews[0]; // Exception here because there are no subviews
}
...
私の "reusingView" UIView がエントリに設定されている場合、追加したサブビューである UILabel が (文字通りにも比喩的にも!) 保持されていることが期待されます。ただし、最初のいくつかの画面上のビューを最初から設定した後、(リサイクルされた、と思います) 非 nil の「reusingView」で呼び出されましたが、サブビューがないため、クラッシュしています既存のラベルを取得して変更しようとするとき。
私は何か誤解していますか?