2016-07-13 3 views
3

Мне всего 2 дня в разработке iOS. Так что простите меня, если это очень простая вещь.iOS Swift как контролировать UIViewController lifecyle

Из того, что я узнал до сих пор:

UIViewController класс напоминает несколько эквивалентно Activity класса в Android.

и viewDidLoad/viewWillAppear метод onCreate/onStart метод

и viewDidAppear метод onResume метод

Пожалуйста, поправьте меня, если я ошибаюсь здесь.

Теперь в Android мы можем контролировать, какие из этих методов (в том числе других методов жизненного цикла) срабатывает/вызывается путем реализации Interface (ActivityLifecycleCallbacks) (несколько похожей на протокол в IOS), которая существует в Application классе в любой деятельности (особенно в классе, который расширяет класс Application).

Это означает, что теперь эти методы будут вызваны/вызваны всякий раз, когда в приложении для Android есть какая-либо навигация с одного экрана на другой.

Как это сделать в iOS с помощью Swift? Как узнать, на каком экране (UIViewcontroller) находится пользователь и где он находится?

Короче говоря, я хочу написать автономный класс, который регистрирует, на каком экране (UIViewController) находится пользователь, и какой из методов жизненного цикла (viewDidLoad, viewWillAppear и т. Д.) Выполняется?

Кто-то, пожалуйста, помогите мне.

Редактировать: - Я не хочу, чтобы они подклассифицировали мой автономный класс вместо класса UIViewController.

+0

Пожалуйста, спросите меня разъяснений, если вы не ясно, с вопросом –

ответ

1

Создайте подкласс контроллера представления и добавьте туда эту реализацию. Затем убедитесь, что все контроллеры представлений, которые вы создаете подклассом, это новый класс, а не сам UIViewController

+0

Спасибо за ваш ответ, но я пытаюсь найти другой способ сделать это, не заставляя их подклассифицировать мой собственный класс. Есть идеи? –

+0

Я просто чувствую, что что-то можно сделать из класса AppDelegate, но я действительно не могу понять это. –

+0

@OneStepBack от AppDelegate не удастся – rounak

2

Глобальных событий, которые вызываются при вызове методов жизненного цикла UIViewController, не существует. Чтобы создать те, которые вам нужно будет подклассифицировать UIViewController, как было предложено.

Вы можете посмотреть UIApplication.sharedApplication().keyWindow?.rootViewController, чтобы получить текущий контроллер корневого представления (который часто, но не всегда активный активный контроллер).

Обычно вы не планируете создавать приложения, зависящие от какого-либо центрального объекта, отслеживающего состояние контроллеров.

Поток методов UIViewController довольно хорошо описанной в class reference, и вы также можете работать его из имен функций -

  • viewDidLoad называется после загружается экземпляр вид контроллера (один раз в конкретизации)
  • viewWillAppear называется перед тем этот вид появляется
  • viewDidAppear называется после этот вид появляется
  • viewWillDisappear называется перед тем этот вид исчезает
  • viewDidDisappear называется после этот вид исчезает

enter image description here

+0

Я посмотрю на него –

+1

«Глобальных событий, которые были запущены при наступлении навигации». В самом деле. Но если вы используете экземпляр 'UINavigationController', вы можете реализовать его протокол делегатов и наблюдать за событиями навигации. –

+0

Ну да, но вопрос задает вопрос о жизненном цикле UIViewController. Возможно, мое использование слова «навигация» немного запутанно. Даже методы 'UINavigationControllerDelegate' не будут предоставлять уведомления, когда вызываются функции жизненного цикла контроллера вида – Paulw11

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