NSToolbar и иерархия контроллеров представления - PullRequest
0 голосов
/ 17 января 2012

У меня есть следующая иерархия классов:

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, он никогда не будет доступен.

Я что-то упустил или это так, как это должно работать?

1 Ответ

0 голосов
/ 26 января 2012

Weird.Оставив это на некоторое время, я решил дать ему еще один шанс.После очистки проекта все заработало как положено.

...