Я разрабатываю настольное приложение Cocoa, которое использует список источников в стиле iTunes: разные элементы в списке источников приводят к тому, что в основной области содержимого отображаются разные представления.
Область содержимого полностью заполнена (по вертикали) NSSplitView
; Слева находится список источников NSOutlineView
. Когда пользователь выбирает элемент слева, соответствующий вид появляется справа от разделителя.
Я могу заставить его работать достаточно хорошо, поместив все в один файл NIB и поместив NSTabView
без полей справа от сплиттера; чтобы переключать представления, мне просто нужно изменить выбранную вкладку. Но помещать все представления в один NIB - плохая практика, поэтому я пытаюсь переместить каждое из подпредставлений в свои собственные файлы NIB.
У меня есть довольно хорошее представление о большей части этого процесса - я создал подкласс NSViewController
для каждого из этих представлений (EntityDetailViewController
, GroupDetailViewController
и т. Д.), Установил владельца файла для каждого нового NIB для соответствующего класса контроллера, установите соединение view
в каждом NIB и заново обработайте привязки. Чего я не знаю, так это как на самом деле изменить, какое подпредставление показывается на экране.
Я пытался использовать стандартный NSView
по умолчанию справа и отправлять ему addSubview:
сообщений; Я попытался подключиться к нему в качестве первого подпредставления и позвонил
NSView *newSubview = /* get subview from the new subview controller */
[[subview superview] replaceSubview:subview with:newSubview];
[self setSubview:newSubview];
Но все остается пустым. Как отобразить подпредставление, загруженное из отдельного NIB?