我是一名 .NET 开发人员,正在尝试 Windows 应用程序的 OSX 端口。我正在使用 MonoDevelop 和 MonoMac(带有 XCode Interface Builder)来创建我的 UI。
来自 Windows,我试图理解 Cocoa 中相当于“UserControl”的内容,因为我在 WinForm 版本中广泛使用了它们。我有一组控件(比如说标签、文本框和按钮),我想将它们打包并在整个 Cocoa UI 的各个位置重用。
据我了解,我需要通过子类化 NSView (我们称之为“MyView”)来创建一个“自定义视图”。我可以在界面生成器中创建“MyView”,但是当我在主窗口上使用它时,它总是显示为空/空白。
以下是我在 IB 中将控件放置在主窗体上的方法:我从对象库添加自定义视图 (NSView),然后将“自定义类”下的“类”属性更改为“MyView”。如果控件在设计时未呈现,这不是问题,但在运行时它也完全是空的。
我怀疑我错过了一些非常简单/明显的东西。自定义视图应该以这种方式使用吗?我在网上找到的所有示例似乎都在讨论自定义绘图,这是我不想要的(我只是想一起使用一堆控件,这样我就可以重用它们)。有人可以帮我解释一下吗?
提前致谢。
如果您只需要一组标准控件,那么您可能需要一个独立的 NIB/XIB 视图。然后,每次要实例化该组时,您都会加载该 NIB,从中获取顶级视图,并将该视图插入到其他视图层次结构中。你会用一个NSViewController
(或自定义子类)来拥有并加载该 NIB。
您还可以向已包含窗口等内容的 NIB 添加独立视图。 NIB 的所有者(通常是NSWindowController
或子类)将有一个出口来引用该独立的视图层次结构。然后,您的代码可以随意使用该视图层次结构,将其插入到窗口视图层次结构中的适当位置。
您通常不会仅仅使用自定义视图类来对标准控件进行分组。您只需创建一个视图子类来创建非标准视图,即以自定义方式绘制或提供不同操作技术的视图。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)