NSWindowDidBecomeMainNotification срабатывает для ВСЕХ окон

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

внутри моего PrefsWindowViewController.m awakeFromNib у меня есть:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didBecomeMain:)
                                             name:NSWindowDidBecomeMainNotification
                                           object:nil];

И в моем раскладе PrefsWindowViewController.m у меня есть:

[[NSNotificationCenter defaultCenter] removeObserver:self name: NSWindowDidBecomeMainNotification object:nil];

Кто-нибудь может объяснить, почему это может быть вызвано, когда другое окно, кроме моего PrefsWindow, становится главным окном?


person Jackson    schedule 10.10.2011    source источник


Ответы (1)


Это потому, что вы передаете nil для параметра object:. Вместо этого передайте окно настроек или отметьте [notification object] == yourPrefsWindow в обратном вызове.

person Wevah    schedule 10.10.2011
comment
Большое спасибо. Сейчас это кажется таким очевидным, но я просто установил для объекта значение [self window] вместо nil, и это сработало. Я надеюсь, что этот вопрос/ответ поможет кому-то еще... - person Jackson; 10.10.2011