Вопрос

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

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

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

Из документов Apple:Если ранее использованное представление (параметр view) подходит, верните его.Если вы вернете другое представление, ранее использованное представление будет освобождено.Представление выбора центрирует возвращаемое представление в прямоугольнике строки.

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

Я новичок в какао (и какао-touch), я не уверен, что функция view.backgroundColor будет работать, но даже при возврате немодифицированного старого представления (что я все равно должен сделать для большинства строк) происходит сбой моего приложения.

Я делаю что-то неправильно?

Это было полезно?

Решение

Да, вы реализуете или –pickerView:titleForRow:forComponent: или –pickerView:viewForRow:forComponent:reusingView:, но не то и другое.Происходит то, что он не звонит вашему –pickerView:titleForRow:forComponent: потому что он использует ваш –pickerView:viewForRow:forComponent:reusingView:.Вы возвращаете reusingView: параметр, но это nil в первый раз, потому что для этой строки не было «ранее использованного представления».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top