Вам будет трудно реализовать это в основном потому, что это плохой дизайн пользовательского интерфейса, и API его не поддерживает.
Вы, пользователь, ожидаете, что кнопка «Назад» вернет его к предыдущему представлению, как и в любом другом приложении, которое они используют. Переход к любому другому представлению запутает их еще больше, потому что это не иерархия, а цикл. Иногда пользователи выбирают B-->C-->B, но в других случаях A-->C-->B-->C. (Как они возвращаются в А?)
Вместо кнопки «Назад» в C у вас должна быть кнопка справа, которая всегда возвращает вас к B, независимо от того, как вы попали в C. Одна и та же кнопка в одном и том же контексте всегда должна давать один и тот же результат. Пользователям не нужно помнить, в каком невидимом режиме они находятся, чтобы предсказать действие кнопки.
Edit01: (Ответ на комментарии ниже)
(Все это не приходит мне в голову, поэтому отнеситесь к этому с недоверием.) Вам нужно будет отказаться от использования навигационного контроллера и вместо этого управлять представлениями самостоятельно. Вам нужно будет поменять представления через панель вкладок, заменив представление C на представления A и B в свойстве представления каждой вкладки.
Я думаю, вам придется начать с невидимого основного вида, а затем добавить к нему панель вкладок. В главном контроллере представления создайте атрибуты/выходы для каждого представления. В каждом представлении есть атрибут/выход, связанный с главным контроллером представления. Затем используйте кнопку «Назад» (которую я настоятельно рекомендую вам обозначить как «Чаты») метода вызова представления C в A и B, которая затем вызывает метод в главном контроллере представления, который (1) удаляет представление C либо с вкладки A, либо вкладка B (2) переключает вкладку на вкладку B, а затем (3) загружает представление B на вкладку B.
Я не могу подчеркнуть, насколько неуклюжим я считаю этот дизайн. Неважно, используют ли его другие приложения. По моему опыту, крупные компании чаще делают ошибки в интерфейсе, потому что их отделы маркетинга хотят, чтобы пользовательский интерфейс выглядел уникальным.
Для сравнения, посмотрите, как приложение для телефона справляется с той же ситуацией. Независимо от того, какую вкладку вы используете для совершения вызова, избранного, контактов, клавиатуры и т. д., вы все равно вернетесь к представлению этой вкладки, когда вызов будет завершен. Если вы хотите сделать вызов другим способом, просто нажмите соответствующую вкладку.
Не обращайте внимания на плохой пример других. Зачем тратить столько времени и усилий, пытаясь воспроизвести чужую ошибку?
person
TechZen
schedule
22.01.2010