2013-03-06 2 views
1

Я использую NSFetchedResultsController и его делегат для заполнения tableview данными, поступающими от основных данных, управляемых данными, as described here.NSFetchedResultsController и разделы таблицы

Однако я не смог найти способ сделать что-то совсем другое: мне нужен мой первый раздел таблицы, чтобы иметь нестандартное статическое содержимое, а второй раздел таблицы должен получать содержимое массива объектов NSFetchedResultsController его ряды.

Как я могу конкретно сообщить моему NSFetchedResultsController, чтобы положить все, что он извлек, в раздел 1 вместо 0?

ответ

1

Если ваш статический контент достаточно прост, вы также можете вставить его в заголовок (вместо раздела 0).

- (void)viewDidLoad 
{ 
    UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)]; 
    // add labels, buttons, etc to header 
    // ... 
    self.tableView.tableHeaderView = header; 
} 
+0

Вот именно то, что мне нужно. благодаря! – marcelorocks

3

Вместо того, чтобы пытаться манипулировать источником данных, измените то, что вы отправляете на UITableView. Например, если он запрашивает подсчет секций, верните 1 + количество разделов, сообщенных вашим выбранным контроллером результатов. Если он запрашивает ячейку, просто проверьте, находитесь ли вы в разделе 0 и в специальном случае.

В целом разделение обязанностей в рамках MVC означает, что ваш контроллер должен нести ответственность за предоставление пользовательского контента, а не вашей модели. Ваша модель не должна знать, как ее данные должны быть представлены. Таким образом, вы можете представить одни и те же данные несколькими способами, не взламывая вместе уродливое решение.

+0

Я действительно забочусь об этом на уровне контроллера, а не на модели. Ваше решение сработало для меня, но мне действительно нужен ответ ниже, заголовок таблицы :). Может быть, я не правильно сформулировал вопрос, который у меня был. – marcelorocks

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