2

Я работаю над iOS. У меня есть требование регистрировать события, когда пользователь вводит или выходит из определенного контроллера просмотра. Для этого я думал, что каким-то образом я смогу зарегистрировать уведомление для запуска настраиваемого метода при изменении контроллера корневого представления. Или, возможно, использовать KVO. Но я не понимаю, как это сделать с точки зрения внедрения, поскольку я не могу найти такого уведомления.Запуск события/метода при изменении UIWindow RootViewController SWIFT

Любая помощь в этом отношении будет высоко оценена. Благодарю.

Обратите внимание, что это проект каркаса. Таким образом, структура строится, а затем добавляется/внедряется в другое приложение. У меня нет информации о контроллерах представления в этом приложении. Единственное, к чему я могу получить доступ, - это контроллер корневого представления UIWindow. Итак, мне нужно знать, когда в нем происходит изменение.

+0

Войти enteries в '' viewDidAppear' и методы viewWillDisappear' этого VC. В качестве альтернативы вы можете использовать 'viewWillAppear' и' viewWillDisappear'. См. Больше в [UIViewController ClassReference] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instm/UIViewController/viewDidDisappear :) – NSNoob

+1

Как я уже сказал что это проект Framework. Поэтому я ничего не знаю заранее. Любой может просто внедрить мою фреймворк в свое приложение и использовать его. Как получить доступ к методам диспетчера представлений. Я не думаю, что это возможно. Если да, то скажите, пожалуйста, как –

+1

А я неправильно прочитал ваш вопрос. Этот метод не будет работать для вас. Я также не уверен в NSNotification. Позвольте мне кое-что посмотреть. Если я найду что-нибудь подходящее, я вернусь к вам. – NSNoob

ответ

0

Вы можете переопределить UIViewControllerviewWillAppear и viewWillDisappear, чтобы знать, когда должен быть представлен/отклонен диспетчер представлений.

В качестве альтернативы вы можете использовать viewDidAppear и viewDidDisappear.

Если вы хотите, чтобы сделать регистрацию от имени пользователей, то у вас действительно есть два варианта:

1. обеспечивают базовые UIViewController суб-класс для них, чтобы переопределить, реализующий требуемую логику в viewWillAppear/viewWillDisappear методы.

2. реализовать удобные методы (например, logAppearEvent, logDisappearEvent) для них, чтобы позвонить вручную самостоятельно в своих UIViewController подклассов.

+0

Было бы лучше, если бы вы добавили к нему пример кодирования. В противном случае это должен был быть комментарий, поскольку я его оставил. – NSNoob

+0

@NSNoob На что это похоже? Простые декларации метода? Не всем ответам нужны фрагменты кода. ;) – damirstuhec

2

Получил работу. Ответ был методом swizzling. Не рекомендуется в качестве первого решения проблемы. Но если вы используете тщательно, и вы точно знаете, что делаете, это путь.

Нашли очень полезную статью здесь: Method Swizzling

Смежные вопросы