Какова рекомендуемая практика для создания представления вкладок с несколькими вкладками в настольном приложении Какао - PullRequest
0 голосов
/ 12 марта 2012

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

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Вкладки всегда одинаковы или они динамические?Если они всегда одинаковы, я склонен использовать один файл xib только потому, что это легко.Вы по-прежнему можете использовать несколько объектов контроллера - просто сделайте их подклассами NSObject и поместите их все в один и тот же xib.

Я сделал быстрый Google, чтобы посмотреть, есть ли простой способ использования NSViewController s с представлениями вкладок, и я нашел эту тему .Это содержит некоторый пример кода для их использования, который даст вам отдельный класс контроллера и XIB на вкладку.Очевидно, я не пробовал этот код, поэтому я не могу ручаться за него, но это может быть достаточно хорошим началом.(В этом примере кода он создает новый контроллер представления каждый раз, когда вы переключаете вкладки, что, вероятно, не то, что вам нужно - если бы это был я, я бы создавал их экземпляры при первой замене вкладки, а затем сохранял ихв словаре в контроллере окна и на последующих переключателях просто вытащите соответствующий контроллер представления, который уже существует.)

0 голосов
/ 13 марта 2012

Оптимальный подход зависит от сложности ваших вкладок. Тем не менее, XIB скоро станет грязным и загроможденным, когда вы добавите к ним несколько представлений. Также вы рискуете раздутый контроллер.

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

У вас будет основной контроллер (окно или представление), который обрабатывает представление (или окно), которое содержит представление вкладок. Этот контроллер выступает в качестве делегата для вашего NSTabView (см. NSTabViewDelegate).

Как только ваш контроллер получает сообщение tabView:didSelectTabViewItem:, вы можете создать вспомогательный контроллер, который управляет этой конкретной вкладкой. Этот контроллер будет создавать экземпляр своего ассоциированного представления (initWithNib) и добавлять его в иерархию представлений. Вы можете повторить этот процесс для каждой вкладки в представлении вкладок. Вы можете настроить все так, чтобы основной (верхний уровень) контроллер вел список каждого суб-контроллера, поэтому вам нужно создать их только один раз.

...