什么是iOS app appate中的self.window

时间:2013-02-06 11:19:45

标签: ios uiviewcontroller uinavigationcontroller

我对iOS中的window和viewcontroller有疑问。我只是看看今天我正在处理的iOS项目的app委托,发现它需要有......

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

在我的应用中。

以下是问题:

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

  2. 什么是self.window?我想我理解'view'和'viewController'的概念,但我不太明白'窗口'是什么...... iPhone有一个屏幕,但MacPro可以有2个显示器;这些窗口是iOS和OS X吗?

1 个答案:

答案 0 :(得分:0)

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

  2. iOS中的窗口是一个UIWindow,它是UIView的子类,因此它与OS X中的窗口不同。请查看UIWindow类参考的概述部分,以了解它的内容确实