簡體   English   中英

NSDocument中的窗口出口在哪里

[英]Where is the window outlet in an NSDocument

我的應用程序已從非基於文檔的應用程序轉換為基於文檔的應用程序。 我通過創建NSDocument的子類Document做到這一點。 我還創建了一個Document.xib並將其“文件所有者”設置為Document

現在在Document.xib ,我可以看到其“文件所有者”中有一個window出口。 我沒有在Document定義的window出口。 它從何而來? 我猜它來自超類NSDocument ,但是我無法訪問Document該變量。 奇怪的window風口怎么了?

看看-[NSDocument setWindow:]的文檔

如果文件的所有者窗口出口已連接到該筆尖,則在加載此文件為其文件所有者的任何筆尖期間,將自動調用此方法。 您不應直接調用此方法,通常也不會覆蓋它。

NSDocument不會直接處理NSWindow ,但是會保留一個NSWindowController列表,您可以通過-[NSDocument windowControllers]方法訪問。 我的猜測是,調用setWindow:時,它將窗口包裝在新的NSWindowController並將其添加到列表中。

您應該可以使用以下內容訪問窗口:

NSWindowController* controller = self.windowControllers.lastObject;
NSWindow* window = controller.window;

我剛剛創建了一個新項目對其進行測試,並且可以正常工作:

- (void)windowControllerDidLoadNib:(NSWindowController *)aController {
    [super windowControllerDidLoadNib:aController];
    NSLog(@"%@", [self.windowControllers.lastObject window]);
}

暫無
暫無

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

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