我想知道是否有可能像打开按钮一样打开第二个窗口。我不知道如何做到这一点,请帮助。第二个窗口创建Objective-C Cocoa
1
A
回答
3
首先设置一个IBAction,当用户点击按钮时被调用。
- (IBAction)buttonClicked:(id)sender {
}
在Interface Builder中,从要大火,行动方法实施NSButton对象控制拖动。
现在,要创建第二个窗口,您可能需要创建一个SecondWindowController类来管理它。向NSWindow声明一个IBOutlet,并将其与Interface Builder相连接,就像您对IBAction所做的一样(通过控制拖动到IBOutlet声明)。
在初始化程序中,加载包含您所展示窗口的nib文件。
- (id)init {
if (self = [super init]) {
[NSBundle loadNibNamed:@"DubBouncerConversionProgressWindow" owner:self];
}
return self;
}
然后,通过调用orderFront来定义窗口的方法:on。
- (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
0
按钮连接到NSWindow的orderFont:
行动。我没有Xcode 4,所以我不能告诉你如何在那里做,但是对于Xcode 3,在Interface Builder中打开xib。在按住控制键的同时,单击并拖动一行按钮到笔尖中的另一个窗口(如果窗口已打开,则拖过标题栏,否则将其拖至xib项目窗口中的图标上)。在弹出的菜单中,选择“orderFront:
”或“makeKeyAndOrderFront:
”(取决于所需的行为)。
如果窗口位于另一个笔尖中,则需要使用类似Stephen的方法。
相关问题
- 1. 创建第二个窗口
- 2. 如何创建显示主窗口的一部分的第二个窗口
- 3. 隐藏第一个窗口后面的第二个窗口
- 4. 在Cocoa中创建一个自定义捕获窗口
- 5. 如何在首选项窗口中加载第二个视图cocoa
- 6. japplet打开第二个窗口
- 7. Java:第二个窗口是空的
- 8. gtk +关闭第二个窗口
- 9. 如何从第二个窗口
- 10. 从IBAction打开第二个窗口
- 11. PyQt4中:第二个窗口不显示
- 12. 显示第二个窗口问题
- 13. 获取第二个活动窗口vb.net
- 14. 在PyQt中打开第二个窗口
- 15. 创建第二个活动
- 16. SVN:创建第二个库
- 17. 关闭在第一个窗口的代码中生成的第二个窗口
- 18. 如何从第二个窗口切换到第三个窗口在硒
- 19. UWP:从主窗口控制第二个窗口
- 20. 我不能使用tkinter在os上创建第二个窗口x
- 21. 更新的事件在第一窗口中创建的对象的第二窗口控制
- 22. 如何处理selenium webdriver中的多重窗口,需要从第二个窗口切换到第三个窗口
- 23. 如何在Cocoa中创建黑边气泡窗口?
- 24. 在Cocoa中创建半透明,圆角的边框窗口?
- 25. node-webkit - 将第二个窗口移至第二个或特定屏幕
- 26. 从Xcode中的第二个.xib文件显示第二个窗口?
- 27. 使用Tkinter iwant打开第二个窗口,然后关闭前一个窗口
- 28. 创建InputOnly窗口
- 29. Cocoa/ObjC:在模态窗口上放置一个浮动窗口
- 30. 的ObjectiveC,创建类的
这是一个很好的答案,但是你可以更好地使用子类'NSWindowController'并且让它处理NIB的加载和卸载(后者不在上面处理)。 – 2011-03-31 23:12:08
感谢:D男人我很感激:D – Muttur 2011-03-31 23:35:13
@Muttur,别忘了接受他的回答然后:) – 2011-04-01 01:10:31