【问题标题】:Cocoa-Touch: UIPickerView viewForRow crashingCocoa-Touch:UIPickerView viewForRow 崩溃
【发布时间】:2009-10-07 19:45:59
【问题描述】:

我有一个 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 是否会起作用,但即使返回未修改的旧视图(我必须对大多数行都这样做)也会崩溃我的应用程序。

我做错了吗?

【问题讨论】:

    标签: iphone cocoa-touch iphone-sdk-3.1


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我将不得不尝试设置一个视图,我只是假设 reusingView 参数将是默认视图。我会在 ~10 小时内尝试一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多