• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何在 Interface Builder 文件中使用自定义 iOS View (位于引用的类库中)?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 11:20:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有两个项目。第一个是 iOS 应用程序,它使用目标框架 Xamarin.iOS 引用类库。在那个类库中,我实现了一个继承自 UIViewCustomView。我还用 "Register" 属性注册了它。

因此,在我将 UIView 拖到我的 ViewController 之后,在界面设计器中,我得到了预填充的信息以将此类用作自定义类。但是当我运行应用程序时,我会得到以下信息:

"Unknown class MyCustomView in Interface Builder file."  

如果我将我的 CustomView 从类库项目移动到我的第一个项目中,那么它将按预期运行。

有人知道如何在 Interface Builder 文件中使用位于引用类库中的 CustomView 吗?



Best Answer-推荐答案


我认为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 自动 Registered 您的代理类。

3) 现在我们要做的就是使用继承,让代理像原来一样:在 MyCustomUIViewProxy.cs 中,我们将基类从 UIView 更改为 MyCustomUIView,我们可以开始了:

partial class MyCustomUIViewProxy : MyCustomUIView
{
    public MyCustomUIViewProxy (IntPtr handle) : base (handle)
    {
    }
}

就是这样:

enter image description here

关于ios - 如何在 Interface Builder 文件中使用自定义 iOS View (位于引用的类库中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31720764/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap