Рисование NSView в пользовательском представлении - как? Я придерживаюсь правильного подхода?

При разработке для Mac OS X я использую Objective-C и Cocoa, а не iPhone / Cocoa Touch. (Тем не менее, мне было бы интересно, была ли такая же процедура для iPhone)

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

Поэтому я установил NSToolbar и его элементы в Интерфейсном Разработчике, а затем разместил настраиваемое представление под меню, занимая остальную часть окна. Мой план состоит в том, чтобы разработать интерфейс для каждого из параметров NSToolbarItems, а затем нарисовать соответствующее представление на настраиваемом представлении при щелчке по указанному NSToolbarItem.

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

1 - Как же мне тогда сделать так, чтобы файл xib отображался в пользовательском представлении? Я посмотрел вокруг, и в большинстве статей, похоже, нет этой ситуации или ситуации, которую я тоже могу описать.

2 - Когда появится окно, я хочу, чтобы вид по умолчанию отображался в настраиваемом представлении. Еще раз, я предполагаю, что просто пишу это в коде инициализации для NSWindow - это не имеет большого значения. Это просто возвращается к вопросу 1 - как мне нарисовать мой NSView в пользовательском представлении, указанном в Interface Builder?

Буду очень благодарен за любую помощь! Приветствую заранее.


person Moddy    schedule 20.06.2010    source источник


Ответы (1)


Поэтому я установил NSToolbar и его элементы в Интерфейсном Разработчике, а затем разместил настраиваемое представление под меню, занимая остальную часть окна.

У вас не может быть меню внутри окна. У вас может быть всплывающая кнопка с меню, но не с меню напрямую. Вы имели в виду «панель инструментов»?

Для этого не нужно создавать настраиваемое представление. Сделайте вид вкладок и установите его в виде таблиц. Дайте ему столько элементов представления вкладок, сколько у вас есть элементов панели инструментов. В вашем контроллере напишите метод действия для каждого элемента панели инструментов и в каждом методе действия переключите активную вкладку представления вкладок.

Вы можете активировать различные вкладки в IB, чтобы заполнить их представлениями в IB. Активная вкладка сохраняется в пере, поэтому перед сохранением убедитесь, что вы вернули ее к первой вкладке, чтобы первая вкладка была той, которая изначально активна при запуске вашего приложения.

Как тогда я могу заставить файл xib отображаться в пользовательском представлении?

Этот вопрос не имеет смысла.

Еще раз, я предполагаю, что просто пишу это в коде инициализации для NSWindow - это не имеет большого значения.

Вы сможете сделать это, только если у вас есть собственный код инициализации для окна, который у вас будет только в том случае, если у вас есть подкласс NSWindow. Для этого есть очень мало причин; если вы не заставляете само окно выглядеть по-другому (не создавая окно Aqua или HUD), вам следует переместить этот код инициализации в другое место, возможно, на вышеупомянутый контроллер (который должен быть владельцем файла пера).

Это просто возвращается к вопросу 1 - как мне нарисовать мой NSView в пользовательском представлении, указанном в Interface Builder?

Пользовательское представление в Интерфейсном Разработчике является простым NSView (если вы явно не измените его на подкласс NSView, который вы создаете). Однако он вам не нужен ни для чего, что вы описали в своем вопросе.

person Peter Hosey    schedule 20.06.2010