在几个 NSView 之间交替

Posted

技术标签:

【中文标题】在几个 NSView 之间交替【英文标题】:Alternating between several NSViews 【发布时间】:2012-05-19 18:13:30 【问题描述】:

我需要的可能很基本,但我绝对不确定如何进行(我以前做过,但我的选择似乎都不适合 Cocoa)。

好的,假设我们有 2 个NSViews - 一个挨着一个:

左边是菜单。 右侧将显示一个 NSView(可能来自不同的 XIB?),具体取决于菜单上的选择。

我的问题:

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

【问题讨论】:

【参考方案1】:

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

-(void)tableViewSelectionDidChange:(NSNotification *)notification

    [self.tabView selectTabViewItemAtIndex:[self.menuTableView selectedRow]];

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

【讨论】:

好主意!这就是我要做的...非常感谢! ;-)【参考方案2】:

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

【讨论】:

以上是关于在几个 NSView 之间交替的主要内容,如果未能解决你的问题,请参考以下文章

ios开发,一个view在几个viewcontroller切换时位置依然保持在最上面,一直可见

WebSocket 在几个时间间隔之间不断断开连接

Swift:在Container View / NSView中切换NSViewController

MacOS-MacAPP的NSView改变背景颜色

Mac - NSView不能保证subview的z轴顺序

AndAlso 在几个 Expression<Func<T, bool>> 之间:从范围引用