绑定Button动作以关闭Cocoa中的App

时间:2011-02-23 08:51:29

标签: cocoa macos

我已经创建了一个带有退出按钮的窗口。在我的controller.h中,我创建了一个这样的动作。

-(IBAction) exitApp : (NSButton*) sender;

我应该在相应的controller.m中写什么,以便当我点击“退出”按钮时应用程序终止。

3 个答案:

答案 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];
}