我创建了一个带有退出按钮的窗口。在我的controller.h中,我创建了一个这样的动作。绑定按钮动作关闭可可中的应用程序
-(IBAction) exitApp : (NSButton*) sender;
我应该在相应的controller.m中写入什么内容,以便在单击“退出”按钮时应用程序终止。
我创建了一个带有退出按钮的窗口。在我的controller.h中,我创建了一个这样的动作。绑定按钮动作关闭可可中的应用程序
-(IBAction) exitApp : (NSButton*) sender;
我应该在相应的controller.m中写入什么内容,以便在单击“退出”按钮时应用程序终止。
如果您唯一的目标是终止应用程序,则不需要自定义操作。只需将您的按钮挂接到Interface Builder中应用程序对象中的terminate:
操作即可。
如果你确实需要的自定义exitApp:
动作,你可以这样定义它:
- (IBAction)exitApp:(NSButton*)sender {
// custom termination code
[[NSApplication sharedApplication] terminate:nil];
}
-(IBAction) exitApp:(id)sender {
[NSApp terminate: nil];
}
你甚至都不需要编写用于此目的的操作方法。主笔尖的“文件所有者”是表示正在运行的应用程序本身的NSApplication
实例,它具有终止应用程序的方法terminate:
。
因此,只需将您的按钮连接到“文件所有者”的terminate:
方法即可。您可以看到“接口”构建器提供的菜单栏的“退出”条目连接到相同目标的相同方法。
如果你真的坚持,实现
-(IBAction)exitApp:(NSButton*)sender {
[[NSApplication sharedApplication] terminate:nil];
}
最后要注意,一个应用程序是不作出退出,但有一个应用程序,以做出退出。所以,在你的按钮上,不要把标签退出 ...这是一个Windows主机。相反,使用动词退出。方法选择器中的动词终止是Cocoa术语中剩余的NextStep-ism,但不应将其用于应用程序的可见部分。
的另一件事是可以实现的委托方法
-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication
{
return YES;
}
,这样应用程序时关闭最后一个窗口会自动退出,然后你可以不设退出按钮。见the documentation。
哇,谢谢你的解释!我会确保我会使用动词Quit now。在这种情况下,退出应用程序是否完全终止了应用程序(如在我按cmd + w)或简单地关闭它? – harihb 2011-02-25 04:35:29
那么,如果你实现了委托'appli ...关闭:',应用程序会在最后一个窗口关闭时自动退出。但要注意狮子的传闻,没有任何用户可以区分非运行的应用程序和正在运行的应用程序,而没有任何打开的窗口... – Yuji 2011-02-25 06:35:07
你可以把这个谣传休息。我现在在Mavericks上,不得不实现这个功能来让应用程序在最后一个窗口关闭后终止。谢谢(你的)信息。正是我所期待的。 – Shammi 2014-10-02 03:37:30
啊,谢谢你的解释。这个对我有用。 – harihb 2011-02-23 09:07:22