在自定义视图中绘制“NSView” - 如何?我采取了正确的方法吗?

时间:2010-06-20 04:16:17

标签: objective-c cocoa macos nsview custom-view

我正在使用Objective-C和Cocoa,同时为Mac OS X开发 - 所以不是iPhone / Cocoa Touch。 (也就是说,如果iPhone的程序相同,我会感兴趣)

我正在开发一个简单应用的偏好设置窗口。我有一个带工具栏的NSWindow - 工具栏上有5个不同的项目,所有这些都需要提供一组不同的选项。

所以我在Interface Builder中设置NSToolbar及其项目,然后在菜单下面放置一个自定义视图 - 占用窗口的其余部分。我的计划是为每个NSToolbarItems选项设计接口,然后在单击指定的NSToolbarItem时将相应的视图绘制到自定义视图。

我猜我只是为每个视图创建一个NSView子类,在Interface Builder中创建一个空的xib - 将xib设置为我的自定义NSView,像往常一样编码......但这里有一些问题;

1 - 我怎样才能让xib文件显示在自定义视图上呢?我环顾四周,大多数文章似乎没有这种情况,或者我也可以联系到这种情况。

2 - 当窗口出现时,我希望默认视图出现在自定义视图中。再一次,我猜我只是在NSWindow的初始化代码中写出来 - 这没什么大不了的。它只是回到问题1 - 如何将我的NSView绘制到Interface Builder中指定的自定义视图?

我真的很感激任何帮助! 提前干杯。

1 个答案:

答案 0 :(得分:1)

  

所以我在Interface Builder中设置NSToolbar及其项目,然后在菜单下面放置一个自定义视图 - 占用窗口的其余部分。

您不能在窗口内有菜单。你可以有一个弹出按钮,它有一个菜单,但没有直接菜单。你的意思是“工具栏”吗?

您无需为此创建自定义视图。制作标签视图并将其设置为tabless。为工具栏项提供尽可能多的选项卡视图项。在控制器中,为每个工具栏项编写一个操作方法,并在每个操作方法中切换选项卡视图的活动选项卡。

您可以激活IB中的不同选项卡,以使用IB中的视图填充它们。活动选项卡保存在笔尖中,因此请确保在保存之前将其设置回第一个选项卡,以便第一个选项卡是应用程序运行时最初处于活动状态的选项卡。

  

我怎样才能让xib文件显示在自定义视图上?

这个问题没有意义。

  

再一次,我猜我只是在NSWindow的初始化代码中写出来 - 这没什么大不了的。

如果您拥有自己的窗口初始化代码,那么您将只能这样做,只有在您拥有子类别NSWindow时才能使用。这样做的理由很少;除非你让窗口本身看起来不同(不是制作Aqua或HUD窗口),否则你应该将初始化代码移到别处,可能是前面提到的控制器(应该是nib的文件所有者)。

  

它只是回到问题1 - 如何将我的NSView绘制到Interface Builder中指定的自定义视图?

Interface Builder 中的自定义视图是一个普通的NSView(除非您明确地将其更改为您创建的NSView的子类)。但是,您在问题中描述的任何内容都不需要。