我有两个项目。第一个是 iOS 应用程序,它使用目标框架 Xamarin.iOS
引用类库。在那个类库中,我实现了一个继承自 UIView
的 CustomView
。我还用 "Register"
属性注册了它。
因此,在我将 UIView
拖到我的 ViewController
之后,在界面设计器中,我得到了预填充的信息以将此类用作自定义类。但是当我运行应用程序时,我会得到以下信息:
"Unknown class MyCustomView in Interface Builder file."
如果我将我的 CustomView
从类库项目移动到我的第一个项目中,那么它将按预期运行。
有人知道如何在 Interface Builder 文件中使用位于引用类库中的 CustomView
吗?
我认为Register
不可能跨越项目边界。在我的测试中,即使你使用完全相同的命名空间,你仍然会报错。
另一方面,是可能的是使用代理类并利用继承将所需的行为带到代理。
基本上可以归结为:
1) 在您的库中,您定义自定义 UIView
并实现您想要共享的任何行为:
public class MyCustomUIView : UIView
{
public MyCustomUIView(IntPtr ptr) : base (ptr)
{
}
public override void AwakeFromNib()
{
// Do something beautiful here...
AddSubview(new UILabel(new CGRect(0,0,200,30)) { Text = "I live in the library"});
BackgroundColor = UIColor.Green;
}
}
请注意,我们不注册
这个类,因为它无论如何都不会工作。
2) 现在,在您的应用项目中,在界面设计器或 XCode 中打开 Storyboard,并为您的占位符 UIView
分配一个全新的名称。在我的例子中,我选择了 MyCustomUIViewProxy
。 Xamarin 工作室将为您创建两个文件:MyCustomUIViewProxy.cs 和 MyCustomUIViewProxy2.designer.cs。请注意,在 Designer.cs 文件中,Xamarin 自动 Register
ed 您的代理类。
3) 现在我们要做的就是使用继承,让代理像原来一样:在 MyCustomUIViewProxy.cs 中,我们将基类从 UIView
更改为 MyCustomUIView
,我们可以开始了:
partial class MyCustomUIViewProxy : MyCustomUIView
{
public MyCustomUIViewProxy (IntPtr handle) : base (handle)
{
}
}
就是这样:
关于ios - 如何在 Interface Builder 文件中使用自定义 iOS View (位于引用的类库中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31720764/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |