Панель вкладок с табличными представлениями - как приложение iTunes / Music! - PullRequest
0 голосов
/ 15 июня 2011

Я пытаюсь повторить функциональность музыкального приложения (которое встроено во все наши iPhone / iPod). Моя цель - иметь:

1) контроллер Tab-Barвнизу, где каждый щелчок вкладки загружает TableView.

2) Необходимо убедиться, что панель вкладок никогда не исчезает при загрузке этих различных табличных представлений

3) Табличные представления должны позволять пользователю выполнять детализацию дальше и дальше вдругие табличные представления, иногда на 3 или 4 уровнях глубиной - но панель вкладок никогда не должна исчезать

4) И последнее: если возможно, все загруженные табличные представления НЕ должны быть контроллерами навигации, а обычнымиUIViewControllers, которые затем содержат таблицы (это потому, что кажется невозможным изменить размер таблиц, когда они создаются как «UITableViewController», только когда они встроены в обычные UIViewControllers, как-во-время, перетаскиваются и удаляются из объектовВключите библиотеку в существующее представление.)

Кто-нибудь готовит какие-то учебные пособия или даже шаблоны кода / типа движка, которыми они могут поделиться с нами о том, как это сделать?

1 Ответ

2 голосов
/ 15 июня 2011

Насколько я понимаю, вы знаете, что в качестве контроллеров UITabBarController можно использовать UINavigationControllers. Почему же тогда не использовать навигационные контроллеры?

Это должно быть полностью то, что вы хотите сделать: создать таблицы в коде или связать его как выходы с помощью Interface Builder, так как вы можете использовать UIViewController или UITableViewController (который наследуется от UIViewController) в качестве пользователя root и подключены к стеку NavController.

Предполагается, что вы используете XCode 4, вот ссылка на учебник

UPD:

для представлений верхнего и нижнего колонтитула всегда лучше использовать свойства tableHeaderView и tableFooterView объекта UITableView. Тогда вам не нужно рассчитывать поля и обновлять компоновку вида вручную, поскольку это происходит автоматически.

Что касается навигации, общепринятой практикой является установка контроллера, содержащего таблицу, в качестве самого делегата таблицы, а затем использовать метод

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

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

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

Ваше приложение будет аварийно завершено.

...