2010-05-17 4 views
0

У меня есть NSWindowController, и я инициализирую его следующим образом;NSWindowController и isWindowLoaded

+ (MyWindowController *) sharedController 
{ 
    static MyWindowController *singleton = nil; 

    if (!singleton) singleton = [[self alloc] initWithWindowNibName: @"myWindow"]; 
    return singleton; 
} 

и я показываю окна следующим образом;

[[MyWindowController sharedController] showWindow: nil]; 

Теперь проблема в том, что мне нужна информация из некоторых элементов управления в этом окне. Но я не хочу загружать окно, если оно еще не загружено, потому что тогда я могу просто пойти с настройками по умолчанию. Должен ли я использовать isWindowLoaded? @property для доступа к singleton? или что здесь рекомендуется? (Если @property, то, пожалуйста, дайте мне только точные, неатомические атрибуты.)

ответ

0

Не хранить данные модели во взглядах. Имейте контроллер (возможно, не MyWindowController, а тот, который нуждается в данных) владеет реальными данными (если есть) и заполняет любые значения по умолчанию.

Любые значения, которые вы заполняете в Interface Builder, должны быть ничем иным, как калибровкой.

Например, если я знаю, что поле должно содержать номер, значение которого составляет ± 50000, я буду вводить «-50000» и соответствующим образом изменить поле и оставить там «-50000». Фактическое значение по умолчанию, скорее всего, будет 0 или что-то, и у меня будет тот, который предоставляется контроллером, которому принадлежит это значение (или, если в поле отображается свойство объекта модели, у меня будет значение по умолчанию, предоставляемое каждой новой моделью объект).

+0

спасибо. По информации некоторых элементов управления я на самом деле имел в виду нечто вроде состояния флажка (просто чтобы убедиться). Я не совсем понимаю, что вы пытаетесь мне сказать. Должен ли я иметь объект в IB с элементами интерфейса, связанными с этим объектом, а не с NSWindowController? – Jim

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