gpt4 book ai didi

objective-c - 第二个窗口创建 Objective-C Cocoa

转载 作者:行者123 更新时间:2023-12-03 16:59:32 25 4
gpt4 key购买 nike

我想知道是否可以用一个按钮打开第二个窗口。我不知道该怎么做,请帮忙。

最佳答案

首先设置一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com