Какао-прикосновение:Сбой UIPickerView viewForRow
-
20-09-2019 - |
Вопрос
У меня есть 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
в первый раз, потому что для этой строки не было «ранее использованного представления».