В моем приложении у меня есть класс, который реализует протокол NSApplicationDelegate - что вы бы получили, если бы вы только начали простой проект.Этот объект имеет представление с элементами управления и тому подобным, и некоторые из этих элементов управления могут запускать диалоги.Итак, в случае, когда мне нужно показать модальное диалоговое окно приложения в качестве ответа на элемент управления, в обработчике этого элемента управления (в моем объекте NSApplicationDelegate) я вызываю runModalForWindow.Скажем, у меня есть класс, производный от NSWindowController с именем MyDialog, с объектом MyDialog * theDialog.Вызов будет выглядеть следующим образом:
NSResult result= [NSApp runModalForWindow:[theDialog window]];
Отображаемый объект отвечает за вызов abortModal, stopModal или stopModalWithCode.Итак, внутри класса MyDialog у меня может быть обработчик для кнопки «ОК» и обработчик для кнопки «Отмена»:
-(void) onOk:(id)sender
{
[NSApp stopModal]; // Returns NSRunStoppedResponse.
[[self window] performClose:self];
}
-(void) onCancel:(id)sender
{
[NSApp abortModal]; // Returns NSRunAbortedResponse.
[[self window] performClose:self];
}