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 に答える