Iphone Cocoa Touch:UIPickerView视图用于Row崩溃

Iphone Cocoa Touch:UIPickerView视图用于Row崩溃,iphone,cocoa-touch,iphone-sdk-3.1,Iphone,Cocoa Touch,Iphone Sdk 3.1,我有一个UIPickerView,在它的委托中,我试图为一行自定义视图。我正在使用3.1 SDK 因此,在代表中,我有: - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { // view.backgroundColor = [UIColor redColor];

我有一个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方法设置的标签,它将不再崩溃

我对cocoa(和cocoa touch)还很陌生,我不确定view.backgroundColor这个东西是否能用,但即使返回未修改的旧视图(我必须对大多数行执行此操作),我的应用程序也会崩溃


我做错了什么吗?

是的,您可以实现
-pickerView:titleForRow:forComponent:
-pickerView:viewForRow:forComponent:reusingView:
,但不能同时实现两者。发生的情况是,它没有调用您的
–pickerView:titleForRow:forComponent:
,因为它正在使用您的
–pickerView:viewForRow:forComponent:reusingView:
。您正在返回
reusingView:
参数,但这是第一次返回
nil
,因为该行没有“以前使用过的视图”。

谢谢,我必须尝试设置一个视图,我只是假设reusingView参数将是默认视图。我将在大约10小时内试一试