2011-08-31 100 views
1

我想添加一個輔助窗口到我的主窗口的底部OS X應用程序,希望最終使它從動畫窗口下方切換按鈕時按下。據我所知,使用SDK執行此操作的最佳方法是使用- [NSWindow addChildWindow:ordered:]將窗口添加爲子窗口。但是,當我調用該函數時,雖然顯示了輔助窗口,但不會將其添加爲子窗口。下面是調用的函數,當我按下按鈕:子窗口沒有被正確添加

- (IBAction)childToggleButtonPressed:(id)sender { 
    [self.window addChildWindow:_secondaryWindowController.window ordered:NSWindowBelow]; 
    NSLog(@"Child Windows: %@", [[self.window childWindows] count]); 
} 

(我還沒有添加代碼以關閉它尚未因爲我確保它擺在首位第一顯示出來)

而且這裏是輸出到控制檯:

2011-08-31 12:37:25.312 Playground[1712:707] Child Windows: (null) 

有誰知道爲什麼窗口不是作爲一個孩子添加,我可以做什麼來解決這個問題?

可能有所幫助的一些附加上下文是,我正在使用圖像作爲窗口本身和標題欄的背景來繪製自定義窗口。我正在修改的代碼可以在http://cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html找到。

謝謝!

編輯:我試着覆蓋- [NSWindow addChildWindow:ordered:]函數並記錄我能找到的任何信息,結果窗口本身沒有傳遞給函數。希望這會幫助有人發現問題!

回答

-1

我最終解決了這個問題,使得子窗口沒有NSWindowControllers。顯然,您不能將NSWindowController的窗口分配爲子窗口。只要我將它們轉換爲NSWindow子類,就可以使用上面顯示的代碼將它們添加爲子窗口(當然,將窗口替換爲_secondaryWindowController.window)。

總之,不要使用NSWindowController的窗口作爲子窗口,只使用NSWindow。