3

我想在我的应用程序委托中使用NSWindowController打开一个窗口。 我创建了一个基本NSWindowController具有相关的NIB,并尝试以显示窗口的方式:NSWindowController的窗口立即发布

@implementation MyAppDelegate 
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Show the main window from a separate nib 
    MyWindowController * theWindowController = [[MyWindowController alloc] initWithWindowNibName:@"MyWindowController"]; 
    [theWindowController showWindow:self]; 
} 
@end 

当我启动应用程序,MyWindowController的窗口只出现第二分数(似乎是为即将发布当它启动时)。

使用ARC,我怎么能强制窗口粘住而不是立即刷新?我不使用NSDocuments,我希望能够同时使用许多这些MyWindowController。

回答

11

您需要将属性添加到保留WindowConroller的应用程序委托(或其他一些将保留应用程序的生命周期的对象)中。例如:

@interface MyAppDelegate : NSObject 

@property (strong, nonatomic) MyWindowController * windowController; 

@end 

然后在初始化窗口控制器时设置此属性。

@implementation MyAppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Show the main window from a separate nib 
    self.windowController = [[MyWindowController alloc] initWithWindowNibName:@"MyWindowController"]; 
    [theWindowController showWindow:self]; 
} 

@end 
+0

哎哟,我刚才问过那个......谢谢;) – 2012-08-15 15:35:26

+0

如果我想用windowController打开相同的窗口怎么办?当我打电话给第二个第一个立即释放。如果我创建windowController1它的作品,但我想创造更多。 – mohacs 2013-02-11 20:45:52

+0

@mohacs您需要保存您呈现的每个窗口控制器。为第二个创建新的属性。需要创造更多?创建'NSMutableArray'并将它们添加到那里。 – Ossir 2015-11-28 18:37:00