您應該使用NSWindowController
子類。 NSWindowController
專門設計用於完成您想要達到的目標,並解決若使用NSBundle
的方法直接加載筆尖時會遇到的幾個問題。您通常應該始終使用NSWindowController
子類來管理窗口。
創建的NSWindowController
一個子類:
@interface MyWindowController : NSWindowController {}
@end
@implementation MyWindowController
- (id)init
{
self = [super initWithWindowNibName:@"MyWindow"];
if(self)
{
//initialize stuff
}
return self;
}
//this is a simple override of -showWindow: to ensure the window is always centered
-(IBAction)showWindow:(id)sender
{
[super showWindow:sender];
[[self window] center];
}
@end
在Interface Builder中,設置類文件所有者的是MyWindowController
和window
出口文件所有者的連接到您的筆尖的窗口對象。
然後,您可以這樣做顯示窗口:
MyWindowController* controller = [[MyWindowController alloc] init];
[controller showWindow:self];
除了「連接文件所有者的窗口」之外,我已經在做你所說的一切了。一旦我做到了這一切工作。謝謝一堆! +1和Tick。 –
確保在IB中取消選中窗口的「Restorable」屬性。 –
@KeithSmiley哪個編輯器是'Restorable'屬性,還是這不再適用於Xcode 5.x? –