Определите ячейки для UITableView с неоднородными данными - PullRequest
0 голосов
/ 12 января 2011

В моем приложении есть подробный экран для объектов Product.Пользовательский интерфейс требует отображения сведений о продукте с использованием интерфейса типа сгруппированного табличного представления с 3 разделами.

Некоторые ячейки в этой таблице условны.Например, по умолчанию в третьем разделе должна отображаться одна ячейка с надписью «Зарегистрировать продукт», и при нажатии на нее должно отображаться представление регистрации.Если продукт уже зарегистрирован, то в третьем разделе вместо этого должны отображаться две ячейки: одна для гарантии и одна для информации об обслуживании.Каждый из них будет при нажатии на разные экраны.Кроме того, они оба должны отображать какие-то данные в ячейке таблицы.В гарантийной ячейке указывается, когда истекает срок гарантии, а в обслуживающей ячейке указывается время следующего обслуживания.

ВОПРОС (в конечном итоге): каков наилучший способ определения ячеек и разделов, которые должна иметь таблица в любой конкретной ситуации.В первую очередь я ищу способ сделать это простым в обслуживании, так как у меня уже есть идеи о том, как это сделать не поддерживаемым.

Должен ли я создать какой-то словарь с ключами и добавить / удалить элементы из него во время viewWillAppearна основе отображаемого продукта?Меня беспокоит число операторов Switch, которые я должен был бы использовать в различных событиях tableView, чтобы проверить, какой тип ячейки находится в заданном пути индекса.

Есть идеи?

1 Ответ

0 голосов
/ 12 января 2011

Посмотрите на Классы Мэтта Галлахера за столом . Они предоставляют простую и расширяемую структуру для настраиваемых таблиц. Ячейки могут быть загружены из NIB или построены в коде. Существует простой интерфейс для предоставления данных для каждой ячейки (- (void)configureForData:(id)dataObject).

Заполнить таблицу очень просто:

[self addSectionAtIndex:0 withAnimation:UITableViewRowAnimationNone];
[self appendRowToSection:0
    cellClass:[NibLoadedCell class]
    cellData:@"This is row 0"
    withAnimation:UITableViewRowAnimationLeft];

Для постоянного хранения данных я рекомендую создать словарь plist и загрузить / сохранить данные оттуда. См. Руководство по программированию списка свойств . Для сложных структур баз данных используйте основные данные для хранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...