Window 的使用

2017-09-10 19:37:45来源:CSDN作者:lovechris00人点击

分享

  • 创建 Window 和 WindowController
  • 跳转
  • 返回

经典用法
使用 xib 来创建 NSWindowController,并让后续的调用都继承自这个类。

1、创建项目时,不勾选 Use Storyboards 选项;
创建出来的项目就包含 MainMenu.xib

创建 Window 和 WindowController

2、创建 MainWindow,继承自 NSWindow.

3、创建 MainWindowController 继承自 NSWindowController,勾选 Also create XIB file for user interface。

4、创建好3以后,在MainWindowController.xib中选中Window,将它的继承类改成我们前面2中自定义的BaseWindow。

5、在AppDelegate.m文件类中删除 @property (weak) IBOutlet NSWindow *window;代码,

6、并在MainMenu.xib中选中Window,删除该Window。

7、在AppDelegate.h文件中引用MainWindowController.h文件创建其对象。注意写在 .h 而非 .m 里面,方便后续其他文件调用。

@interface AppDelegate ()@property (strong) MainWindowController *mainWindowC;@end

8、在AppDelegate.m中初始化 window,并让 window 显示和居中。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {    [self initMainWindow];}- (void)initMainWindow{    _mainWindowC = [[MainWindowController alloc]initWithWindowNibName:@"MainWindowController"];    [[_mainWindowC window] center];    [_mainWindowC.window orderFront:nil];}

跳转

9、测试跳转方法,我们另外创建一个窗口 FirstWindowController 继承自NSWindowController ,勾选 xib,并将他的 window 继承自 BaseWindow。

10、给 MainWindowController.xib 拖拽按钮,并将按钮方法连线到 MainWindowController.m 中。

11、在 windowDidLoad 中初始化 firstWindow,并在按钮点击方法中编写跳转方法。

- (void)windowDidLoad {    [super windowDidLoad];    self.contentViewController.view.wantsLayer = YES;    self.contentViewController.view.layer.backgroundColor = [NSColor magentaColor].CGColor;    self.firstWindowC = [[FirstWindowController alloc]initWithWindowNibName:@"FirstWindowController"];}- (IBAction)btn1OnClick:(id)sender {    [self.firstWindowC.window orderFront:nil];//显示要跳出来的窗口    [self.window orderOut:nil];//关闭当前窗口}

返回

12、为了测试从 firstWindow 返回到 mainWindow,放置按钮到 FirstWindowController.xib,并给按钮拉线写方法:

- (IBAction)btn1OnClick:(id)sender {    AppDelegate *adelegate = (AppDelegate *)[[NSApplication sharedApplication] delegate];    [self.window close];    [[adelegate.mainWindowC window] makeKeyAndOrderFront:nil];}

参考文章:
mac app开发之:利用NSWindowController实现窗口跳转 -
http://blog.csdn.net/y_zhangpengwei/article/details/50817132

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台