我想知道是否可以用一个按钮打开第二个窗口。我不知道该怎么做,请帮忙。
最佳答案
首先设置一个 IBAction,以便在用户单击按钮时调用。
- (IBAction)buttonClicked:(id)sender {
}
在 Interface Builder 中,按住 Control 键并从要触发该操作的 NSButton 对象拖动到方法实现。
现在,要创建第二个窗口,您可能需要创建 SecondWindowController 类来管理它。向 NSWindow 声明一个 IBOutlet 并将其连接到 Interface Builder,就像对 IBAction 所做的那样(通过按住 Control 键拖动到 IBOutlet 声明)。
在初始化程序中,加载包含您正在呈现的窗口的 nib 文件。
- (id)init {
if (self = [super init]) {
[NSBundle loadNibNamed:@"DubBouncerConversionProgressWindow" owner:self];
}
return self;
}
然后,定义一个方法来通过调用 orderFront: 来呈现窗口。
- (void)displayWindow {
if (![progressWindow isVisible]) {
[progressWindow setIsVisible:YES];
[progressWindow orderFront:nil];
}
}
现在,当用户单击按钮时,您可以在 SecondViewController 的实例上调用 -displayWindow。
- (IBAction)buttonClicked:(id)sender {
[mySecondViewController displayWindow];
}
这是正在发生的事情的完整图片:
FirstViewController.h
@interface FirstViewController : NSObject {
SecondViewController *mySecondViewController;
}
- (IBAction)buttonClicked:(id)sender;
@end
FirstViewController.m
@implementation FirstViewController
- (IBAction)buttonClicked:(id)sender {
if (!mySecondViewController) {
// If the second view controller doesn't exist yet, make it!
mySecondViewController = [[MySecondViewController alloc] init];
}
[mySecondViewController displayWindow];
}
@end
SecondViewController.h
@interface SecondViewController : NSObject {
IBOutlet NSWindow *progressWindow;
}
- (void)displayWindow;
@end
SecondViewController.m
@implementation SecondViewController
- (id)init {
if (self = [super init]) {
[NSBundle loadNibNamed:@"DubBouncerConversionProgressWindow" owner:self];
}
return self;
}
- (void)displayWindow {
if (![progressWindow isVisible]) {
[progressWindow setIsVisible:YES];
[progressWindow orderFront:nil];
}
}
@end
关于objective-c - 第二个窗口创建 Objective-C Cocoa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507364/