我读过的每个视频教程和书都会显示以下代码,以便将UIView添加到UIWindow .
[window addSubview:self.viewController.view];
我对上面代码的理解是将“View”(它是UIView的一个实例)添加到窗口(这是UIWindow的一个实例) . 让我分解一下(根据我的理解):
window(UIWindow)addSubview(将View添加到窗口的方法)Self.viewController.view(简单地返回已经在UIViewController类中实例化的“view”的实例 .
我遇到的第一个问题是我在Apple网站上的UIWindow类参考文档中找不到方法“addSubview” . 然而,有人向我指出UIWindow从UIView继承了addsubview方法 . 这一切都很好,但为什么所有的书籍和在线文件都说addubview方法为窗口添加了一个视图 - 但是怎么会这样呢?真的很困惑 . 有人可以一步一步地解释这段代码在做什么吗?如果UIWindow继承了UIView的addsubview方法,那么它如何能够备份继承树呢?真丢了 . 我真正需要的是小型示例代码,其中包含逐步发生的事情的图表 . 真的很棒 . 非常感谢
3 回答
将窗口视为与屏幕或绘图对象直接关联的视图 .
在上面的例子中,window.view不正确 . 窗口不包含视图,它是具有其他行为的视图 .
假设您正在从NIB文件加载UIViewController,则将通过访问视图来实例化与viewController关联的视图 . 所以......
您可能会看到类似的代码
View只是一个超类Window,因此您可以使用任何公共视图方法 .
通常,在加载MainWindow.xib文件时,会实例化AppDelegate对象中的窗口 .
你应该看到类似的东西
在您的AppDelegate头文件中 . (IBOutlet指令告诉在加载nib文件时初始化窗口对象 .
请记住,UIWindow只是一个带有其他行为和数据的UIView .
希望这可以帮助 .
“然而有人向我指出,UIWindow继承了UIView的addsubview方法 . 这一切都很好,但是为什么所有的书和在线文档都说addubview方法为窗口添加了一个视图 - 但是怎么会这样呢?真的很困惑 . 有人可以一步一步地解释这段代码在做什么吗?如果UIWindow继承了UIView的addsubview方法,那么它怎样才能恢复继承树呢?“
而已 . 我认为你不了解继承是什么 . 这个比喻是"is a" . 一个UIWindow "is a" UIView . 它拥有UIView所拥有的一切,以及更多 . UIView的一个功能是添加子视图 . 因此UIWindow也具有这种能力 . 它不需要任何其他UIView来做它 . 它 is a UIView . 它可以自己做 .
尝试
这是我的头脑,所以它可能不完全准确 .