我如何关闭NSWindowController的实例

时间:2012-12-05 16:06:47

标签: objective-c cocoa nswindow nswindowcontroller

我正在学习一些obj-c,因此我正在构建一个小型的可可应用程序。

从MainMenu.xib我已经在顶部的“主菜单”中添加了一个菜单。单击时,这会触发一个IBAction,它打开一个窗口实例,在这种情况下是一个用于管理类别的窗口。

此类别窗口有一个NSWindowController,如下所示:

//  CategoriesWindow.h
#import <Cocoa/Cocoa.h>
@interface CategoriesWindow : NSWindowController
-(IBAction)OpenCategoriesWindow:(id)sender;
@end

//  CategoriesWindow.m
#import "CategoriesWindow.h"

@implementation CategoriesWindow

-(IBAction)OpenCategoriesWindow:(id)sender
{
    CategoriesWindow *Categories = [[CategoriesWindow alloc] initWithWindowNibName:@"CategoriesWindow"];
    [Categories showWindow:self];
}
@end

对于这个我有一个带有NSTableView的CategoriesWindow.xib做了一些事情,所以我有一个CategoryTableController.h和.m来处理这个表的数据。 当我点击一个按钮我希望它做一堆事情,然后我希望窗口自己关闭它。也就是说,我想让这个窗口从CategoryTableController.m中的IBAction中关闭。

我该怎么做?这个设置的一个坏处(跟随某个教程......)是我可以通过单击菜单按钮打开这个窗口的很多实例。

任何提示或想法从哪里开始?

1 个答案:

答案 0 :(得分:0)

从那里Reference

[Categories close];

但是,当您从类的实例方法创建类的实例时,您的实现会出现问题。这对我来说不合适。此外,您不会在任何地方保留新实例,因此可能会在ARC下销毁或在MRR下泄露。

我想你可能想要:

-(IBAction)OpenCategoriesWindow:(id)sender
{
    [self showWindow:sender];
}

-(IBAction)CloseCategoriesWindow:(id)sender
{
    [self close];
}

虽然我不能确定。