0

我正在学习一些 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 自行关闭。

我该怎么做呢?这个设置的一个坏事(从某处的教程中得到......)是我可以通过单击菜单按钮打开这个窗口的许多实例。

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

4

1 回答 1

0

从那里参考

[Categories close];

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

我想你可能想要:

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

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

虽然我不能确定。

于 2012-12-05T16:29:28.470 回答