Данные, не относящиеся к основным данным, в UITableView, поддерживаемом основными данными

Взгляните на Music.app (или iPod.app). В корневом представлении «Альбомы» есть строка «Все песни». В корневом представлении «Песни» есть строка «Перемешать». В корневом представлении списков воспроизведения есть строка «Добавить список воспроизведения ...». Статические данные смешиваются в одном UITableView с (предположительно) данными Core Data. Мне интересно, как Apple этого добилась.

Я пробовал два разных подхода, и оба потерпели неудачу. Как и Music.app, у моих представлений также есть UISeachBar в tableHeaderView. Моя первая попытка отслеживала, сколько «статических» строк у меня было, и скорректировала indexPath, предоставленную различным методам UITableView и NSFetchedResultsController, которым требуется информация о разделах и строках. Все работало отлично, пока я не реализовал методы NSFetchedResultsControllerDelegate, позволяющие создавать, редактировать и удалять. Метод insertRowsAtIndexPaths: withRowAnimation: (и аналогичный) не работает на моих скорректированных indexPaths. Пути indexPath по умолчанию также не работают.

Моя вторая попытка заключалась в том, чтобы вложить еще один UITableView в tableHeaderView моего основного UITableView для использования для статических строк (и для размещения UISeachBar в собственном tableHeaderView). Этот подход даже не дошел до редактируемой стадии. UISearchBar в конечном итоге перекрывается ползунком sectionIndex корневого UITableView и больше не скользит вверх за UINavigationBar при прокрутке короткого списка.

Поэтому вместо того, чтобы диагностировать мои конкретные проблемы, я прошу совета о том, как Apple решает эту задачу. Могут ли они получить данные один раз, кэшировать их в массиве NSArray и построить вложенный массив NSArray из разделов и строк, который включает в себя как статические, так и базовые строки данных?

5
задан Shaun Inman 3 December 2010 в 03:33
поделиться