NSwindow消失了

时间:2012-12-31 11:33:21

标签: objective-c cocoa nswindow

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

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

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

  • Xcode 4.5.2
  • MacBookPro i5 10.8.2

感谢您的回答。

1 个答案:

答案 0 :(得分:10)

你没有保留窗口。

将.h中的NSWindow* myWindow;定义为属性。


在.h

@property (strong)NSWindow* myWindow;

在.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];

}

编辑:

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

在.h

@property(strong) NSMutableArray *myWindowArray;

在.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];

    }
}

编辑2:

找到application here