2015-06-07 5 views
7

Я пытаюсь установить розетку для главного окна моего приложения в своем делете приложения, а затем подключить его к интерфейсу Builder. Я создаю выход в моем App Делегат легко:Ссылка на главную NSWindow в AppDelegate с помощью раскадровки?

@IBOutlet weak var mainWindow: NSWindow! 

Однако нет никакого способа, в Interface Builder, для меня, чтобы подключить выход реферирования к App делегата. Вместо этого, я могу только подключить его к контроллеру Window, который я надеюсь, что эта картина показывает:

enter image description here

Первый объект является контроллер окна и второй объект является первым Ответчик, однако объект App Делегат отсутствует. Строка меню имеет объект App Делегирование:

enter image description here

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

Я полагаю, что я могу получить доступ к объекту окна с помощью:

NSApp.windows[0] 

Но это, кажется, склонны к ошибкам, особенно если у меня есть больше одного окна.

+0

Почему ты хотите ссылку NSWindow в App Delegate? – Kaunteya

+0

@Kaunteya Я пытаюсь реализовать 'applicationShouldHandleReopen: hasVisibleWindows:' и снова открыть главное окно, если щелкнуть значок док-станции, но у меня нет возможности ссылаться на главное окно из App Delegate. Это неверно? – Charlie

ответ

5

Я не знаю, правильно ли это делается, но это решит вашу проблему.

Decalre NSWindow недвижимость в AppDelegate

weak var window: NSWindow! 

и установить свойство в чем-то вроде windowWillLoad в NSWindowController

(NSApplication.sharedApplication().delegate as! AppDelegate).window = self.window 

Вам придется подкласс NSWindowController определить windowWillLoad

Смежные вопросы