Начните с создания подкласса NSViewController, чтобы у каждого из ваших подпредставлений был контроллер. В вашем методе действия, когда пользователь нажимает кнопку для переключения между представлениями, вы можете создать новый контроллер представления с соответствующим классом и nib (сохраните ссылку на него в ivar в контроллере окна). Контроллер представления действует как владелец пера. Затем все, что вам нужно сделать, это добавить представление контроллера представления в качестве подпредставления в главном окне, и все готово.
Вот быстрый пример. Это вызывается в главном окне контроллера из метода действия (и после запуска) после выполнения нескольких не связанных задач; единственная сложная часть - это исправление цепочки респондента (если вам повезет, вам может не понадобиться это делать).
- (void)_setAccessoryViewControllerFromTag:(NSInteger)tag;
{
if ( _accessoryContentViewController != nil )
{
[self setNextResponder:[_accessoryContentViewController nextResponder]];
[_accessoryContentViewController release];
}
switch ( tag )
{
case 0:
_accessoryContentViewController = [[RLGraphsViewController alloc] initWithNibName:@"GraphsView" bundle:nil];
break;
case 1:
_accessoryContentViewController = [[RLSummaryViewController alloc] initWithNibName:@"SummaryView" bundle:nil];
break;
case 2:
_accessoryContentViewController = [[RLEquipmentViewController alloc] initWithNibName:@"EquipmentView" bundle:nil];
break;
default:
_accessoryContentViewController = [[RLLocationsViewController alloc] initWithNibName:@"LocationsView" bundle:nil];
break;
}
[_accessoryContentViewController setNextResponder:[self nextResponder]];
[self setNextResponder:_accessoryContentViewController];
[self.accessoryView setContentView:[_accessoryContentViewController view]];
}