我創建了一個帶有退出按鈕的窗口。在我的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