5

我想添加一个 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

感谢您的回答。

4

1 回答 1

10

您没有保留窗口。

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


在.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:

在这里找到应用程序

于 2012-12-31T11:55:49.493 回答