什么是iOS应用程序委派中的self.window



我有一个关于iOS中的窗口和视图控制器的问题。我只是看了一眼我今天正在做的iOS项目的应用程序代表,发现它需要。。。

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;

在我的应用程序中。

以下是问题:

  1. 这是否意味着navigationController是我的应用程序的根视图控制器?NavigationController是UIViewController的子类,但它的任务只是在导航栏上提供导航功能,对吗?

  2. 什么是self-window?我想我理解"视图"one_answers"视图控制器"的概念,但我不太理解"窗口"是什么……iPhone有一个屏幕,但MacPro可以有两个显示器;这些窗口是否适用于iOS和OS X?

  1. 可能。self.window.rootViewController将返回窗口的根视图控制器,我想,在这种情况下,它来自故事板。事实上,这一行投射返回到导航控制器的对象并不能使其成为导航控制器——它将是故事板中的任何对象(带有左箭头的控制器没有连接到其他任何东西)。假设强制转换是正确的,这允许您编写navigationController.topViewController之类的东西,而不会让编译器抱怨它。至于导航控制器的功能,它确实提供了导航栏的功能,但它也显示了其内容控制器的视图,其topViewController的视图是您在启动时看到的视图。

  2. iOS中的窗口是UIWindow,它是UIView的子类,因此它与OS X中的窗口不同。请参阅UIWindow类参考的Overview部分,了解它的作用。

最新更新