Как определить, появился ли вид через всплывающее окно или нет? - PullRequest
0 голосов
/ 06 июля 2010

Как узнать, как появилось представление, используя UINavigationViewController?

Представление появилось простым способом, как первое представление в стеке UINavigationController.Или это произошло потому, что всплыло второе представление, а первое снова проявило себя.Как вы узнали, что из этого произошло?

Ответы [ 5 ]

1 голос
/ 06 июля 2010

Простой подход - добавить свойство в ваш RootViewController, чтобы отслеживать, выдвинуло ли оно другое представление на navigationController.

-(BOOL)hasPushedSecondView;

Инициализируйте в NO в вашем методе init.

Прежде чем помещать представление secondViewControllers в стек, обновите свойство до YES.

В viewWillAppear проверьте значение и обновите свой вид соответственно. В зависимости от того, как вы хотите, чтобы приложение работало, вам может потребоваться сбросить свойство hasPushsecondview обратно в NO.

1 голос
/ 06 июля 2010

Насколько мне известно, единственный надежный способ сделать это - создать подкласс UINavigationController и переопределить методы UINavigationBarDelegate :

– navigationBar:shouldPushItem:
– navigationBar:didPushItem:
– navigationBar:shouldPopItem:
– navigationBar:didPopItem:

Не забудьте позвонить super, конечно.

0 голосов
/ 25 февраля 2015

Вы можете определить это напрямую с помощью нескольких методов на вашем подклассе UIViewController.

Из Документация Apple :

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

Класс UIViewController предоставляет методы, которые ваш контроллер представления может вызвать, чтобы определитьпочему произошло изменение внешнего вида.

  • isMovingFromParentViewController: представление было скрыто, поскольку контроллер представления был удален из контейнера
  • isMovingToParentViewController: представление отображается, поскольку оно добавляется в контейнер
  • isBeingPresented : представление отображается, потому что оно было представлено другим контроллером представления
  • isBeingDismissed : представление скрыто, поскольку оно было просто удалено
0 голосов
/ 06 июля 2010

вы можете взглянуть на leftBarButtonItem или backBarButtonItem, в зависимости от того, как написано ваше приложение, и определить, как выглядит представление.Если он находится сверху, если у вас нет пользовательского leftBarButtonItem, там не будет никакого объекта.

0 голосов
/ 06 июля 2010

В зависимости от причин, по которым вы знаете разницу, вы также можете манипулировать переменными в методах viewWillAppear / viewWillDisappear затронутых представлений.

Взгляните на этот ТАК вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...