2009-10-07 31 views
0

我有一個UIPickerView,它是委託我試圖爲一行自定義視圖。我正在使用3.1 SDK。Cocoa-Touch:UIPickerView viewForRow崩潰

所以委託我:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { 
// view.backgroundColor = [UIColor redColor]; 
    return view; 
} 

從蘋果文檔: 如果先前使用的視圖(查看參數)是足夠的,返回。如果您返回不同的視圖,則會釋放先前使用的視圖。選取器視圖將返回的視圖居中放置在矩形的行中。

當我運行這個,我的UIPickerView控件沒有任何項目,並在一段時間後崩潰。 當我刪除這個特定的方法(這是委託可選的),我可以看到我通過titleForRow方法設置的標籤,它不會再崩潰。我很不熟悉view.backgroundColor的東西可以工作,但即使在返回未修改的舊視圖(對於大多數行我必須這樣做)崩潰時,我的應用程序

我做錯了什麼?

回答

2

是的,你實施要麼–pickerView:titleForRow:forComponent:–pickerView:viewForRow:forComponent:reusingView:,但不是兩者。發生的是它不會撥打–pickerView:titleForRow:forComponent:,因爲它正在使用您的–pickerView:viewForRow:forComponent:reusingView:。您將返回reusingView:參數,但第一次是nil,因爲該行沒有「先前使用的視圖」。

+0

謝謝,我將不得不嘗試設置視圖,我只是假定reusingView參數將是默認視圖。 我會在〜10小時內試試 – Prody

+0

就是這樣,謝謝 – Prody