所以经过大量的挖掘,我终于找到了答案。
信息最丰富的教程在这里:
http://sgmunn.com/blog/2012/03/using-loadnib-to-load-a-view/
本质上,您需要创建自定义子视图,在界面构建器中设置它们,然后在 MonoTouch 端进行一些简单的映射。但是让我从这个例子中脱离出来的关键点是:
在子类化 UIView 时,您必须实现 IntPtr 的基本构造函数
当你这样做时,一切都会到位。您已经连接了 Outlets 和 Actions,并且可以随意操作它们。
编辑:比链接更具描述性...
我什至如何开始在 MonoTouch 中继承 UIView?如果我创建一个新的
“iPhone View”,它给我的只是一个笔尖。我没地方搭讪
出路或行动。
创建一个新的 iPhone 视图,它将创建一个 nib。打开笔尖,将“自定义类”设置为您的自定义类。 MonoTouch 应该会自动生成它。如果没有,请创建一个新的 C# 类和子类 UIView,但请确保为 IntPtr 创建构造函数。如果您使用 Storyboard,当您调用 Storyboard.InstantiateViewController() 时,它会为您填写 IntPtr 值。请注意,如果您使用 Storyboard.InstantiateViewController,您还需要将标识符设置为自定义类的名称。
创建 iPhone 视图后,您应该能够在 IB 中打开“代码视图”并关联您的出口和操作。
鉴于您能够告诉我如何设置 MonoTouch 以使用 C#
用于子类化 UIView 的代码文件,以便我可以处理事件和访问
属性,我如何将它连接到笔尖?我看到很多人
说在 Objective-C 中使用 initWithFrame 调用 loadNibNamed,但是
这不能正确转换为 MonoTouch。我该怎么做
单触?
MonoTouch 中没有 initWithFrame: 或 CGRect,你使用的是 RectangleF。如果以编程方式加载 nib,则可以使用接受 RectangleF 的构造函数并使用它来设置 x、y、宽度、高度。
鉴于 #1 和 #2 已实现,我如何加载此自定义工具栏
到任何视图控制器中,并将其添加到
屏幕?做 initWithFrame CGRect 的东西似乎没有
MonoTouch 中的简单路径
对于 Storyboard,请使用 Storyboard.InstantiateViewController(确保您在 IB 中设置了标识符)。对于其他所有内容,请使用:
var nibObjects = NSBundle.MainBundle.LoadNib("YourViewName", theController, null);
var instantiatedView = (YourClassName)Runtime.GetNSObject(nibObjects.ValueAt(0));
如以上链接所示。
享受吧! - 艾莉森。