Действие кнопки привязки, чтобы закрыть приложение в какао - PullRequest
4 голосов
/ 23 февраля 2011

Я создал окно с кнопкой выхода на месте.В моем файле controller.h я создал подобное действие.

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

Что я должен написать в соответствующем controller.m, чтобы приложение завершало работу, когда я нажимал кнопку «Выход».

Ответы [ 3 ]

11 голосов
/ 23 февраля 2011

Вам даже не нужно писать метод действия для этой цели.«Владелец файла» основного пера - это экземпляр NSApplication, представляющий само запущенное приложение, и у него есть метод terminate:, который завершает приложение.

Итак, просто подключите свою кнопку к методу terminate: «Владелец файла».Вы можете видеть, что запись «Выход» в строке меню, предоставленная построителем интерфейса, связана с тем же методом той же цели.

Если вы действительно настаиваете, реализуйте

-(IBAction)exitApp:(NSButton*)sender {
   [[NSApplication sharedApplication] terminate:nil];
}

Наконец, обратите внимание, что приложение не сделано для выхода , но приложение выполнено для quit .Таким образом, не нажимайте на кнопку Выход ... это Windows-ism.Вместо этого используйте глагол Quit .Глагол terminate в селекторе методов - это NextStep-ism, остающийся в терминологии Cocoa, но вы не должны использовать его в видимых частях вашего приложения.

Другое дело, что выможно реализовать метод делегата

-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication
{
     return YES;
}

, чтобы приложение автоматически закрывалось при закрытии последнего окна, а затем вы можете покончить с кнопкой выхода.См. документацию .

10 голосов
/ 23 февраля 2011

Если ваша единственная цель - закрыть приложение, для этого вам не нужно настраиваемое действие.Просто подключите вашу кнопку к действию terminate: в объекте приложения в Интерфейсном Разработчике.

Если вам нужно это пользовательское действие exitApp:, вы можете определить его следующим образом:

- (IBAction)exitApp:(NSButton*)sender {
    // custom termination code
    [[NSApplication sharedApplication] terminate:nil];
}
4 голосов
/ 23 февраля 2011
-(IBAction) exitApp:(id)sender {
  [NSApp terminate: nil];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...