У меня есть следующая иерархия классов:
NSViewController
MyGeneralViewController
ViewControllerA
ViewControllerB
MyGeneralViewController
содержит некоторый общий код, используемый как ViewControllerA
, так и ViewControllerB
. Одним из общих элементов кода является создание NSToolbar
и реализация необходимых методов протокола для NSToolbarDelegate
.
Одна из кнопок на панели инструментов - это кнопка, которая позволяет пользователю открывать NSTextView
в отдельном окне (больше возможностей, дополнительные функции для работы с ключевыми словами и т. Д.).
Метод для этого:
- (IBAction) openTextWindow: (id) sender {
[self setTextWindowController: [[TextWindowController alloc] init]];
[[self textWindowController] showWindow];
}
Эта кнопка на панели инструментов должна быть доступна только для вида, управляемого ViewControllerA
. Я рассуждал так: если я реализую метод openTextWindow
только для ViewControllerA
, кнопка панели инструментов будет серой (недоступно) для представления, управляемого ViewControllerB
, так как система времени выполнения будет подниматься по иерархии классов для поиска метод, который был определен для кнопки панели инструментов и не найден.
Похоже, что это не так. Когда я реализую метод с помощью MyGeneralViewController
, кнопка всегда доступна (как и ожидалось, но не то, что я хочу). Но когда я реализую его только для ViewControllerA
, он никогда не будет доступен.
Я что-то упустил или это так, как это должно работать?