Я намагаюся реалізувати інтерфейс користувача, структурований, як у додатку Tweetie , який поводиться так: контролер подання верхнього рівня, схоже, є контролером навігації, кореневим видом якого є подання таблиці "Облікові записи". Якщо натиснути будь-який рахунок, він переходить на другий рівень, який має панель вкладок внизу. Кожен елемент вкладки показує інший список і дозволяє детальніше деталізувати (наступні рівні не відображають панель вкладок).
Отже, здається, що ієрархія реалізації така:
UINavigationController
- Рахунки :
UITableViewController
UITabBarController
- Твіти :
UITableViewController
- Детальний вигляд твіту / користувача / тощо
- Відповіді :
UITableViewController
- ...
- Твіти :
- Рахунки :
Здається, це працює [^ 1], але, схоже, не підтримується згідно з документацією SDK для -pushViewController:animated:
(курсив додано):
viewController : контролер перегляду, який висувається на стек. Він не може бути екземпляром контролера панелі вкладок.
Я хотів би уникати приватних API та подібних, але я не впевнений, чому це використання явно заборонено, навіть коли воно, здається, працює нормально. Хтось знає причину?
Я думав про те, щоб поставити контролер панелі вкладок як основний контролер, кожна з яких має окремі контролери навігації. Проблема в тому, що кожен навігаційний контролер повинен спільно використовувати один кореневий контролер подання (а саме таблицю "Облікові записи" в Tweetie ) - це, здається, не спрацьовує: натискання контролера таблиці на другий контролер навігації видаляє його з першого. Не кажучи вже про все ведення бухгалтерії при виборі іншого рахунку, мабуть, було б болем.
Як мені реалізувати це правильним шляхом?
[^ 1]: Контролер панелі вкладок потрібно підкласифікувати, щоб елемент навігації контролера панелі вкладок на цьому рівні залишався синхронізованим з вибраним елементом навігації вибраної вкладки, а контролер таблиці окремої вкладки повинен пересувати свої відповідні подання деталей self.tabBarController.navigationController
замість self.navigationController
.