我正在开发OS X / Cocoa应用程序,我想要这样的行为:
我将如何编程呢?
答案 0 :(得分:7)
从子类化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]];
}