Окно настроек Objective-C makeKeyAndOrderFront или showWindow? - PullRequest
3 голосов
/ 11 февраля 2010

Я работаю над новым приложением Mac и хочу открыть свое окно настроек, у меня есть 2 Nib (xib) файла, один для главного окна и один для окна настроек, затем у меня естьДействие openPreferences, которое показывает окно настроек, sth.например:

- (IBAction)openPreferences:(id)sender
{
    PrefCont *cont = [[PrefCont alloc] init];
    [cont showWindow:self];
}

этот код работает, но когда я нажимаю более одного раза в открытом пункте меню настроек, окно настроек открывается дважды или более, чем дважды.

Есть ливозможность сделать это с чем-то.как makeKeyAndOrderFront, но он должен вызываться PrefController?

Или я могу спросить Mac, открыто ли окно?если нет, то покажи илисвязать это.

Это было бы очень полезно, спасибо всем!

Ответы [ 2 ]

6 голосов
/ 11 февраля 2010

Если вы хотите избежать симптома двойного окна, вы должны сделать PrefCont * cont иваром этого класса, а затем выполнить:

- (IBAction) openPreferences:(id)sender {
  if (cont == nil) {
    cont = [[PrefCont alloc] init];
  }
  [cont showWindow:sender];
}

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

Не забудьте [cont release]; когда закончите ...

5 голосов
/ 12 февраля 2010

Лучшим способом было бы иметь класс PrefCont с одноэлементной подпрограммой, такой как:

+(PrefCont*)prefs
{
  static PrefCont* prefs = nil;
  if (!prefs)
     prefs = [[PrefCont alloc] init];

  return prefs;
}

, а затем, когда вы хотите показать настройки, просто позвоните

  [[PrefCont prefs] showWindow:sender];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...