Кнопка Back возвращается к другому UitableViewController, откуда он пришел

StackOverflow https://stackoverflow.com/questions/2113387

  •  22-09-2019
  •  | 
  •  

Вопрос

Скажите, что у меня есть UitableViewController A и UitableViewController B. Как A, так и B загружают uiview C. На задней кнопке в C, как мне убедиться, что он всегда возвращается к B, а не откуда?

Вот конкретный пример: окно контактов в iPhone Skype. B = окно чата, каждая строка - это история чата с другим человеком C = окно чата отображает разговор с одним и тем же человеком.

C может быть загружен из A или B, но я хочу, чтобы задняя кнопка в окне чата (C) вернулась только к окну чатов (B).

Ваше здоровье.

Это было полезно?

Решение 4

Я получил ответ от Google Group и последовал за его предложением, это работает:

От Сукима: Я считаю (хотя у меня нет реальной идеи), что то, что эти приложения, такие как Skype и Beejive На самом деле лучше, потому что тогда пользователь увидит, что представление изменилось за счет того, что Tabbar изменил основные моменты. От: Я дополнительно читаю поток Stackoverflow. Теперь я понимаю, о чем вы спрашиваете.

Другие советы

Вы собираетесь найти это трудно реализовать в основном потому, что это плохой дизайн пользовательского интерфейса, а API не поддерживает его.

Вы, пользователь, ожидаете, что кнопка Back вернет их «обратно» к предыдущему представлению, как и в любом другом приложении, которое они используют. Пойдя к любому другую точку зрения, еще больше их путает, потому что это не иерархия, а петля. Пользователи иногда будут идти b-> c-> b, но в других случаях A-> c-> b-> c. (Как они возвращаются к?)

Вместо кнопки на спине в C, у вас должна быть кнопка с правой стороны, которая всегда ведет вас к B независимо от того, как вы добрались до C. Один и тот же кнопка в одном и том же контексте всегда должна давать один и тот же результат. Пользователям не нужно помнить, в каком невидимом режиме они находятся, чтобы предсказать, какое действие будет иметь кнопку.


Edit01: (Ответ на комментарии ниже)

(Это все вне моей головы, так что возьмите его с зерном соли.) Вам нужно будет отказаться от использования контроллера навигации и вместо этого управлять взглядами самостоятельно. Вам нужно будет поменять просмотр через Tabbar, заменив представление C на представления A и B в свойстве представления каждой вкладки.

Я думаю, что вам придется начать с мастер -представления, который невидим, а затем добавить к этому Tabbar. В контроллере Master View создайте атрибуты/розетки для каждого представления. В каждом представлении имейте атрибут/розетку, связанный с контроллером Master View. Затем получите кнопку «обратно» (которую я настоятельно рекомендую вам пометить «чаты») метода вызова C в A и B, который затем вызывает метод в контроллере Master View, который (1) удаляет представление C с любой вкладки A или Вкладка B (2) переключает вкладку на вкладку B, а затем (3) загружает просмотр B в вкладку B.

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

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

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

Вы всегда вернетесь к виду, который называется pushViewController

Не могли бы вы отправить B сообщение, которое заставляет B звонить pushViewController?
Я могу не понять вашу архитектуру, но я считаю, что это сработает.

Если вы действительно хотите сделать это, вы можете создать метод в B, который толкает C, а затем выталкивает B из (без анимации) и вызвать метод, который толкает C. Конечно, когда вы станете B to b, A все равно будет под ним.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top