2016-03-05 2 views
1

Я хочу, чтобы открыть панель настроек в моей какао приложения, когда пользователь вводит Preferences... меню или набрав + ,. Поэтому я подключился из пункта меню настроек к оконному контроллеру в раскадровке как show segue.Открыть бесконечное окно Preferences панели в какао приложения при использовании SEGUE

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

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

ответ

4

Для того, чтобы предотвратить окно от того, запускаемых несколько раз, вы выбираете Single из атрибута в окне контроллера Инспектор на раскадровке.

enter image description here

Значение по умолчанию Multiple, вызывая бесконечные окна, чтобы быть запущены.

В качестве альтернативы, если вы хотите использовать код, вот что я сделаю в AppDelegate.swift.

extension AppDelegate: NSSeguePerforming { 
    func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool { 
     if identifier == OpenPreferencesIdentifier { 
      let windows = NSApp.windows 
      for window in windows { 
       if window.windowController?.className == MyPreferencesWindowController.className() { 
        return false 
       } 
      } 
     } 

     return true 
    } 
} 

Также не забудьте установить соответствующий идентификатор сегмента на раскадровке.