用自定义视图替换NSSplitview的子视图

时间:2012-01-29 21:02:52

标签: macos cocoa xcode4 nssplitview

我仍然需要学习很多可可,所以我可能错过了一些明显的东西。我有一个自定义视图,我想在nssplitview中显示,取代当前的子视图。

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

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

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

viewMessage是MessageView的出口。

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

1 个答案:

答案 0 :(得分:3)

通常,您不需要将NSSplitView的子视图替换为您自己的子视图。而是将自己的自定义视图添加为分隔符每一侧的默认子视图的子视图。您可以使用addSubview:在代码中执行此操作,但在Xcode中使用Interface Builder可能更容易。将“自定义视图”拖到splitview中,然后在Identity Inspector中的Custom类下,将类更改为自定义NSView子类的名称:

enter image description here

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