NSwindow消失了

Sim*_* V. 5 cocoa objective-c nswindow

我想添加一个NSWindow,简单的代码是:

NSWindow* myWindow;
myWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(100,100,300,300)
                                       styleMask:NSTitledWindowMask
                                         backing:NSBackingStoreBuffered
                                           defer:NO];
[myWindow makeKeyAndOrderFront:nil];
Run Code Online (Sandbox Code Playgroud)

窗口出现一秒然后消失.怎么了?

  • Xcode 4.5.2
  • MacBookPro i5 10.8.2

感谢您的回答.

Ano*_*dya 10

你没有保留窗户.

NSWindow* myWindow;.h 定义为属性.


在.h

@property (strong)NSWindow* myWindow;
Run Code Online (Sandbox Code Playgroud)

在.m

- (IBAction)button:(id)sender {

   if (self.myWindow==nil){
      self.myWindow= [[NSWindow alloc] initWithContentRect:NSMakeRect(100,100,300,300)
                                               styleMask:NSTitledWindowMask
                                                 backing:NSBackingStoreBuffered
                                                   defer:NO];
   }

   [self.myWindow makeKeyAndOrderFront:NSApp];

}
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您想从同一个按钮打开多个窗口.创建一个数组

在.h

@property(strong) NSMutableArray *myWindowArray;
Run Code Online (Sandbox Code Playgroud)

在.m

- (IBAction)button:(id)sender {
    self.myWindow= [[NSWindow alloc] initWithContentRect:NSMakeRect(100,100,300,300)
                                                   styleMask:NSTitledWindowMask
                                                     backing:NSBackingStoreBuffered
                                                       defer:NO];


    [self.myWindowArray addObject:self.myWindow];

    for (NSWindow *win in self.myWindowArray) {
        [win makeKeyAndOrderFront:NSApp];

    }
}
Run Code Online (Sandbox Code Playgroud)

编辑2:

这里找到应用程序.