如何从应用委托中获取iOS应用程序的活动视图?

7 浏览
0 Comments

如何从应用委托中获取iOS应用程序的活动视图?

如何从应用委托中获取当前活动的视图(用户当前正在查看的主要视图),以供参考?

0
0 Comments

在iOS应用程序中从app delegate中获取活动视图的方法取决于应用程序的设置方式。通常情况下,app delegate会有一个主视图控制器属性,可以通过该属性来获取活动视图。

获取app delegate的方法如下:

MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
UIView *topView = appDelegate.viewController.view;

如果应用程序的app delegate中有一个导航控制器属性,可以使用以下方法来获取活动视图:

UIView *topView = appDelegate.navigationController.topViewController.view;

如果第三行代码报错 "Property 'navigationController' not found on object of type 'kzAppDelegate'",则说明你可能没有使用导航控制器。请参考我的答案中的第二行代码。

0
0 Comments

问题:如何从app delegate中获取iOS应用程序的活动视图?

原因:在某些情况下,我们可能需要在app delegate中访问当前活动的视图。例如,我们可能需要在应用程序启动时执行某些操作,或者在应用程序进入后台时保存数据。在这些情况下,我们需要获取当前活动视图以进行相应的操作。

解决方法:

1. 首先,我们需要获取应用程序的主窗口window,在UIApplication的sharedApplication方法中调用keyWindow方法即可:

UIWindow *window = [[UIApplication sharedApplication] keyWindow];

2. 接下来,我们可以从窗口的根视图控制器中获取当前活动的视图。我们可以通过调用根视图控制器的view属性来获取它的视图:

UIView *topView = window.rootViewController.view;

通过上述代码,我们可以成功获取到当前活动的视图,然后可以根据需要进行相应的操作。

0
0 Comments

问题的原因是现有的解决方法无法在模态弹出的视图中获取当前活动的视图。为了解决这个问题,可以使用下面的代码来获取活动视图:

UIView * topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];

0