Кто должен отвечать за вызов runModalForWindow - контроллера или инициатора - PullRequest
1 голос
/ 20 июня 2011

У меня есть окно (с его контроллером), которое должно блокировать все остальные окна.По этой причине я хочу показать окно, используя [NSApp runModalForWindow ..].

Вопрос в том, кто отвечает за вызов этого метода:

  1. контроллер окна(возможно, я должен переопределить функцию showWindow).
  2. объект, который создал контроллер.В таком случае, кто должен отвечать за вызов stopModal?

1 Ответ

1 голос
/ 09 февраля 2012

В моем приложении у меня есть класс, который реализует протокол 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];  
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...