UIWindow RootViewController更改SWIFT时触发事件/方法
我正在研究一个iOS框架。 我有一个要求,当用户进入或退出一个特定的视图控制器时logging事件。 为此,我想如果以某种方式我可以注册通知来触发一个自定义的方法,当根视图控制器改变。 或者也许使用KVO。 但我不明白如何从实施的angular度来做这件事,因为我找不到任何这样的通知。
任何在这方面的帮助将不胜感激。 谢谢。
请注意,这是一个框架项目。 所以这个框架是build立的,然后添加/embedded到另一个应用程序。 我没有关于该应用程序中的视图控制器的任何信息。 我唯一可以访问的是UIWindow的根视图控制器。 所以,我需要知道什么时候发生变化。
得到它的工作。 答案是方法swizzling。 不build议作为问题的第一个解决scheme。 但是,如果仔细使用,你确切知道你在做什么,这是要走的路。
在这里find一个非常有用的文章: 方法Swizzling
你可以覆盖UIViewController
的viewWillAppear
和viewWillDisappear
来知道什么时候视图控制器将被呈现/解散。
或者,您可以使用viewDidAppear
和viewDidDisappear
。
如果你想代表用户login,那么你真的有两个select:
1.提供一个基本的UIViewController
子类来覆盖它们,它在viewWillAppear
/ viewWillDisappear
方法中实现所需的逻辑。
2.实现便利的方法(如logAppearEvent
, logDisappearEvent
)让他们在自己的UIViewController
子类中手动调用。
- 如何在导航栏中改变titleView的大小。 因为navigationBar中titleView和backButton之间存在差距
- 在iOS9中以编程方式打开手机设置
- 问题显示来自url的图像数组
- 在Swift iOS中parsingJSON阿拉伯数值
- 在Swift中parsingJSON到NSArray
- 转换后的date比较为零
- UIsearchBarinput键盘types
- 在swift中parsingJson时,无法将types'NSNull'的值转换为'NSString'
- Swift JSON错误,无法将types'__NSArrayM'(0x507b58)的值转换为'NSDictionary'(0x507d74)