我正在学习一些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中关闭。
我该怎么做?这个设置的一个坏处(跟随某个教程......)是我可以通过单击菜单按钮打开这个窗口的很多实例。
任何提示或想法从哪里开始?
答案 0 :(得分:0)
从那里Reference:
[Categories close];
但是,当您从类的实例方法创建类的实例时,您的实现会出现问题。这对我来说不合适。此外,您不会在任何地方保留新实例,因此可能会在ARC下销毁或在MRR下泄露。
我想你可能想要:
-(IBAction)OpenCategoriesWindow:(id)sender
{
[self showWindow:sender];
}
-(IBAction)CloseCategoriesWindow:(id)sender
{
[self close];
}
虽然我不能确定。