2015-11-02 4 views
1

Я только начал работать над приложением OSX, впервые в объективе-c. Мне нужно создать окно, в котором будут отображаться все сетевые интерфейсы, доступные на компьютере.Событие загрузки NSWindow для управления и логической инициализации

До сих пор

  • У меня есть AppDelegate, что почти ничего не делает
  • Я поставил Main nib file base name к моему главному окну, которое является XIb, заголовок и реализация файловой
  • Я СДЕЛАЛ мое окно xib наследуется от моего класса и добавляет нужные мне точки, используя перетаскивание правой кнопкой мыши (хорошо работает, я предположил, что до сих пор был прав)

Вопрос

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

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

Мой вопрос

Нужно ли иметь NSWindowController плюс NSWindow класс? Я чувствую, что слишком много файлов для одного окна. У меня есть xib и два файла .h/.m ... Если это не требуется, как я могу получить уведомление при загрузке окна?

ответ

1

Вопрос, который вам нужен NSWindowController (s) или нет, зависит от сложности вашего приложения.
Если ваше приложение представляет собой небольшую утилиту, использующую одно окно, вы можете уйти с настройкой своего пользовательского интерфейса в MainMenu.xib и подключить его к некоторому IBOutlets в AppDelegate.

Но вышеприведенный подход становится беспорядочным, когда ваше приложение становится более сложным. Чтобы укротить эту сложность, вы можете создать выделенные классы NSWindowController (например, по одному для каждого окна). Эти оконные контроллеры могли управлять иерархией дочернего NSViewControllers, чтобы еще больше разделить вашу сложность.

Если это не требуется, как я могу получить уведомление при загрузке окна?

По умолчанию шаблон Xcode должен был создать файл AppDelegate.m. Вы можете добавить код для инициализации интерфейса в

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 

На данный момент окно было полностью загружен и

@property (weak) IBOutlet NSWindow *window; 

должен указывать на экземпляр окна.

+0

И вам не нужен подкласс NSWindow. Когда окно загружается, вызывается '- [NSWindowController windowDidLoad]'. – Willeke