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