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)
窗口出现一秒然后消失.怎么了?
感谢您的回答.
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: