在几个NSView之间交替

时间:2012-05-19 18:13:31

标签: objective-c cocoa xib nsview

我需要的可能是非常基本的,但我肯定不确定如何继续(我以前做过但我的选择似乎没有Cocoa友好)。

好的,我们说我们有2 NSView个 - 一个接近另一个:

  • 左边的那个用作菜单。
  • 右边的那个会显示一个NSView(可能来自不同的XIB?),具体取决于菜单上的选择。

GUI Outline

我的问题:

  • 我应该如何将不同的NSView加载到最右边的NSView?
  • 如何在调整窗口大小时确保子视图(当前活动的子视图)已正确调整大小?

2 个答案:

答案 0 :(得分:2)

rdelmar的解决方案应该可行,但另一种可能更简单的方法是使用NSTabView来处理内容视图之间的切换。您可以使用界面构建器中的设置窗格或通过调用[self.tabView setTabViewType:NSNoTabsNoBorder]来隐藏NSTabView的选项卡。我可能会使用左侧的表格视图。当用户选择一行时,您会执行以下操作:

-(void)tableViewSelectionDidChange:(NSNotification *)notification
{
    [self.tabView selectTabViewItemAtIndex:[self.menuTableView selectedRow]];
}

NSTabView可以/将负责正确调整其内容视图的大小,只要您正确设置其内容视图的自动调整掩码(弹簧和支柱)。

答案 1 :(得分:1)

您应该能够在IB中创建一个看起来像黄色视图的自定义视图,并将其调整大小行为设置为在窗口调整大小的情况下向两个方向展开。然后,当您获得新视图时(通过引用已有的视图或加载新的xib),将其添加为自定义视图的子视图,并将其框架设置为自定义视图的框架。我认为默认情况下视图会调整其子视图的大小,因此应该使用自定义视图正确调整大小。