每当显示一个新的视图控制器时,我都想得到通知,UIApplicationDelegate提供了这样一种方式,但是对于整个应用程序,而不是针对每个视图控制器。
每次出现新的视图控制器时,是否都会调用任何委托?
备注
我完全了解UIViewController内部的函数,但我询问的是与视图控制器本身分离的委托,类似于ApplicationDelegate
我的尝试
我搜索了很多,我脑海中唯一的解决方案是扩展ViewController,然后让我的视图控制器继承这个新的视图控制器,但是我真的更希望有一种方法来捕捉那些事件,而不改变我的视图控制器中的任何东西。
发布于 2017-04-06 11:16:17
有一个
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated;方法在UINavigationControllerDelegate中。
迅捷版:
func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool)您可以将您的UIApplicationDelegate设置为UINavigationController的委托,并获得那里的所有事件。
发布于 2017-04-06 11:18:40
创建一个委托协议,将app委托设置为此协议委托的委托,然后在视图中调用控制器函数(viewDidLoad、viewDidAppear等),调用您的委托函数。
发布于 2017-04-06 11:22:45
不,在您的应用程序中显示给定的视图控制器时,没有获得通知或委托回调的通用解决方案。
正如已经指出的,当您只使用一个UINavigationController时,您可以得到一个部分的解决方案。
https://stackoverflow.com/questions/43253458
复制相似问题