2009-10-07 4 views
0

У меня есть UIPickerView, в нем делегат Я пытаюсь настроить представление для строки. Я использую SDK 3.1.Cocoa-Touch: UIPickerView viewForRow crashing

Так в делегате у меня есть:

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

Из яблока документов: Если ранее используемый вид (параметр зрения) является адекватным, что вернуться. Если вы вернете другое представление, будет выпущено ранее используемое представление. В представлении сборщика отображается возвращаемое представление в прямоугольнике для строки.

Когда я запустил это, мой элемент управления UIPickerView не имеет в нем никаких элементов и после короткого сбоя. Когда я удаляю этот конкретный метод (который является необязательным для делегата), я могу увидеть метки, которые я установил с помощью метода titleForRow, и он больше не будет разбиваться.

Я довольно новичок в какао (и какао-touch), я не уверен, что 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

Смежные вопросы