1

我还有很多东西要学可可,所以我可能在这里错过了一些明显的东西。我有一个自定义视图,我想在 nssplitview 中显示,它替换了当前的子视图。

我有一个MessageView.xib 文件和一个子类NSView 的MessageView .h/.m。我通过 Xcode 4 的内置 gui 构建器为我的主窗口(包含 nssplitview 的窗口)创建了一个自定义视图实例。我在窗口的控制器中为这个 MessageView 实例创建了一个出口。

在我的窗口控制器中,当我想将子视图换成 splitview 时,它运行这个

 [splitView replaceSubview:[[splitView subviews] objectAtIndex:1] with:viewMessage];

viewMessage 是 MessageView 的出口。

运行此代码时,该子视图的显示变为空白。我不确定我的自定义视图是否有问题或存在一些尺寸问题。我需要做些什么来使视图适合分屏视图,还是我的自定义视图没有正确显示?我很难找到有关使用 Xcode 4 创建自定义子视图的教程,所以我不确定这是否有问题。自定义视图中只有一个标签和一个文本字段。

4

1 回答 1

3

一般来说,你不需要用你自己的替换 NSSplitView 的子视图。相反,您将自己的自定义视图添加为分隔线每一侧的默认子视图的子视图。您可以在代码中使用 来执行此操作addSubview:,但在 Xcode 中使用 Interface Builder 可能更容易。将“自定义视图”拖到拆分视图中,然后在身份检查器中,在自定义类下,将类更改为自定义 NSView 子类的名称:

在此处输入图像描述

我认为(在我脑海中,未经测试),如果你真的需要用你自己的类替换默认的 NSSplitView 子视图,你可以在 Interface Builder 中使用相同的方法来完成它,但是选择默认的子视图本身和在检查器中更改其类。这不适用于所有 AppKit 类,但它可能适用于 NSSplitView。

于 2012-01-29T23:22:40.180 回答