我已经创建了一个带有退出按钮的窗口。在我的controller.h中,我创建了一个这样的动作。
-(IBAction) exitApp : (NSButton*) sender;
我应该在相应的controller.m中写什么,以便当我点击“退出”按钮时应用程序终止。
答案 0 :(得分:11)
您甚至不必为此目的编写动作方法。主nib的“文件所有者”是表示正在运行的应用程序本身的NSApplication
实例,它有一个终止应用程序的方法terminate:
。
因此,只需将按钮连接到“文件所有者”的terminate:
方法即可。您可以看到“界面”构建器提供的菜单栏的“退出”条目连接到同一目标的相同方法。
如果你真的坚持,那就实施
-(IBAction)exitApp:(NSButton*)sender {
[[NSApplication sharedApplication] terminate:nil];
}
最后,请注意,应用 退出,但应用程序是退出。所以,在你的按钮上,不要把标签退出 ...这是一个Windows主义。而是使用动词退出。方法选择器中的动词终止是Cocoa术语中保留的NextStep-ism,但您不应在应用程序的可见部分使用它。
另一件事是你可以实现委托方法
-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication
{
return YES;
}
以便在最后一个窗口关闭时应用程序自动退出,然后您可以取消退出按钮。请参阅the documentation。
答案 1 :(得分:10)
如果您的唯一目标是终止该应用程序,则不需要针对该应用程序执行自定义操作。只需将按钮挂钩到Interface Builder中Application对象中的terminate:
操作即可。
如果您确实需要自定义exitApp:
操作,则可以这样定义:
- (IBAction)exitApp:(NSButton*)sender {
// custom termination code
[[NSApplication sharedApplication] terminate:nil];
}
答案 2 :(得分:4)
-(IBAction) exitApp:(id)sender {
[NSApp terminate: nil];
}