UIWindow RootViewController更改SWIFT时触发事件/方法

我正在研究一个iOS框架。 我有一个要求,当用户进入或退出一个特定的视图控制器时logging事件。 为此,我想如果以某种方式我可以注册通知来触发一个自定义的方法,当根视图控制器改变。 或者也许使用KVO。 但我不明白如何从实施的angular度来做这件事,因为我找不到任何这样的通知。

任何在这方面的帮助将不胜感激。 谢谢。

请注意,这是一个框架项目。 所以这个框架是build立的,然后添加/embedded到另一个应用程序。 我没有关于该应用程序中的视图控制器的任何信息。 我唯一可以访问的是UIWindow的根视图控制器。 所以,我需要知道什么时候发生变化。

得到它的工作。 答案是方法swizzling。 不build议作为问题的第一个解决scheme。 但是,如果仔细使用,你确切知道你在做什么,这是要走的路。

在这里find一个非常有用的文章: 方法Swizzling

你可以覆盖UIViewControllerviewWillAppearviewWillDisappear来知道什么时候视图控制器将被呈现/解散。

或者,您可以使用viewDidAppearviewDidDisappear

如果你想代表用户login,那么你真的有两个select:

1.提供一个基本的UIViewController子类来覆盖它们,它在viewWillAppear / viewWillDisappear方法中实现所需的逻辑。

2.实现便利的方法(如logAppearEventlogDisappearEvent )让他们在自己的UIViewController子类中手动调用。