簡體   English   中英

UIWindow UIView addSubview問題

[英]UIWindow UIView addSubview issue

我閱讀的每部視頻教程和書籍都顯示以下代碼,以將UIView添加到UIWindow。

[window addSubview:self.viewController.view];

我對上述代碼的理解是在窗口中添加了“視圖”(它是UIView的一個實例)(這是UIWindow的一個實例)。 讓我分解一下(根據我的理解):

window(UIWindow)addSubview(將視圖添加到窗口的方法)Self.viewController.view(僅返回已在UIViewController類中實例化的“視圖”的實例。

我遇到的第一個問題是,我在Apple網站上的UIWindow類參考文檔中找不到方法“ addSubview”。 但是有人向我指出,UIWindow從UIView繼承了addsubview方法。 沒關系,但是為什么所有的書和在線文檔都聲明addsubview方法將視圖添加到窗口中-怎么可能呢? 真的很困惑。 有人可以逐步解釋此代碼的作用嗎? 如果UIWindow繼承UIView的addsubview方法,那么如何將其備份到繼承樹中? 真的迷路了 我真正需要的是帶有示例代碼的小示例代碼,這些代碼逐步說明了所發生的事情。 真的很棒。 非常感謝

將窗口視為直接與屏幕或圖形對象相關聯的視圖。

在上面的示例中window.view是不正確的。 窗口不包含視圖,它是具有其他行為的視圖。

假設您正在從NIB文件加載UIViewController,則將通過訪問該視圖來實例化與viewController關聯的視圖。 所以...

您可能會看到類似的代碼

MyViewController *vc = [MyViewController alloc]initWithNibName:@"MyNibFile" bundle:nil]autorelease];
[window addSubView:vc.view];
[window makeKeyAndVisible];

View只是Window的超類,因此您可以使用任何公共視圖方法。

通常,加載MainWindow.xib文件時會實例化AppDelegate對象中的窗口。

你應該看到類似

@property(nonatomic, retain) IBOutlet UIWindow *window;

在您的AppDelegate頭文件中。 (當裝入nib文件時,IBOutlet指令告訴初始化窗口對象。

請記住,UIWindow只是具有其他行為和數據的UIView。

希望這可以幫助。

“但是有人好心地向我指出,UIWindow繼承了UIView的addsubview方法。這很好,但是為什么所有的書和在線文檔都聲明addsubview方法將視圖添加到窗口中,但那怎么可能呢?真的很困惑。有人可以一步一步解釋一下這段代碼在做什么嗎?如果UIWindow繼承了UIView的addsubview方法,那么它將如何備份到繼承樹上呢?”

而已。 我認為您不了解什么是繼承。 隱喻是“是”。 UIWindow是“ UIView”。 具有 UIView 擁有的一切,以及更多。 UIView擁有的一件事就是addSubview的功能。 因此,UIWindow也具有該功能。 它不需要任何其他UIView即可完成此操作。 是一個 UIView。 它可以自己做。

嘗試

[window.view addSubview:self.viewController.view];

那是我的頭上的問題,所以它可能並不完全准確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM