Разделение NSTabView на несколько контроллеров NSView и XIB - PullRequest
1 голос
/ 05 сентября 2011

Я только начинаю разработку какао для настольных компьютеров (у меня есть опыт разработки под iOS).Если этот вопрос кажется базовым, простите меня.

При этом я имею в виду большую программу с большим количеством вычислений и функциональностью.Существует почти дюжина просмотров, организованных с помощью NSTabView.Вместо того, чтобы сваливать все в одно чудовище класса и создавать файл XIB, который ставит мою систему на колени (очевидно, Xcode не настолько эффективен… кто знал?: P).Я хотел бы, чтобы каждая вкладка была своей собственной NSViewController с сопровождающим XIB;поэтому я хотел бы загрузить представление каждой вкладки из соответствующей XIB.

Я думаю об этом с точки зрения UITabBarController, но, похоже, это не работает (насколько я могу найти, NSTabViewController не существует).Я не уверен, как это сделать (или даже если это возможно - но я не могу быть единственным, кто имеет эту проблему?), И я был бы признателен за любую помощь.Спасибо!

Обновление: Я попытался назначить вид контроллера для представления вкладки, но быстро понял, что это никуда меня не приведет.Стоит ли создавать NSTabViewController с нуля, или есть какое-то решение?

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

Разработка какао на рабочем столе имеет некоторые существенные различия по сравнению с разработкой для iOS. Одним из них является использование контроллеров представления - они не являются строго необходимыми - и когда вы используете их, вы можете просто придерживаться универсального NSViewController независимо от того, какой вид он содержит. Все методы, необходимые для управления представлением вкладок, находятся в классе NSTabView, а не в контроллере.

Сказав это, размещение 12 представлений в виде вкладок звучит как болезненный способ взаимодействия с программой. Задумывались ли вы о настройке типа детализации источника (например, itunes или почта с их боковыми панелями - каждая запись на боковой панели соответствует своему представлению)?

1 голос
/ 12 сентября 2011

Я отказался от панели вкладок и, согласно совету Сосборна, я использовал разделенное представление, точнее, я поставил табличное представление сбоку, а пользовательское представление занимает большую часть экрана. Затем, в моем AppDelegate, у меня есть отдельные контроллеры в качестве ivars (мне нужны отдельные контроллеры, потому что там много вычислений, и я не хочу, чтобы класс монстров обрабатывал их все). Они будут загружены лениво, и представление будет назначено текущему виду контроллера по мере необходимости.

...