为Xamarin绑定iOS嵌入式框架最终导致异常?

为Xamarin绑定iOS嵌入式框架最终导致异常?,ios,xamarin,binding,frameworks,native,Ios,Xamarin,Binding,Frameworks,Native,请帮我做最后一步。 谢谢 我正在测试将iOS本机框架绑定到Xamarin库 我创建了iOS框架并添加了MyView.h和MyView.m MyView.m (instancetype)initWithFrame:(CGRect)frame { id p=[super initWithFrame:frame]; self.backgroundColor=[UIColor greenColor]; 返回p; } MyView.h @接口MyView:UIView @结束 非常简单的框架 将M

请帮我做最后一步。 谢谢

我正在测试将iOS本机框架绑定到Xamarin库

  • 我创建了iOS框架并添加了MyView.h和MyView.m

    • MyView.m
    (instancetype)initWithFrame:(CGRect)frame { id p=[super initWithFrame:frame]; self.backgroundColor=[UIColor greenColor];
    返回p; }

    • MyView.h
    @接口MyView:UIView @结束

  • 非常简单的框架

  • 将MyView.h添加到公共头文件中,并为任何体系结构创建通用框架。 这一框架现在已经实现

    firstfile.h,MyView.h

  • 两个文件作为公共头

  • 我创建了iOS测试应用程序(单个VC应用程序),并尝试了这个框架

    MyView*v=[[MyView alloc]initWithFrame:CGRectMake(0,01000)]; [self.view addSubview:v]

  • 正如我所预料的那样。它画了一个绿色的盒子

  • 我创建了Xamarin库项目,并通过单击鼠标右键并添加文件,将此框架文件导入本机参考文件夹

  • 将此行添加到Xamarin库中的ApiDefinition.cs

    [基本类型(类型化(UIView))] 接口MyView { [导出(“initWithFrame:”)] IntPtr构造函数(CGRect帧); }

  • 建造OK

  • 我创建了Xamarin.iOS应用程序,并将此库导入到解决方案中并对其进行测试

    MyView v=新的MyView(新的CGRect(0,0,100,100)); this.View.AddSubview(v)

  • 建造好! 但是运行时错误

    调用的目标已引发异常

    因为我是CSharp和mono的新手。 来到这里并不容易, 在这一点上你能帮我一点忙吗

    我的线索是,在第5步中应该有一些东西指向MyView.h。但我不知道那里应该有什么

    我的完整源代码如下:


    这段代码使用的是静态库而不是框架。
    我尝试了不同的选项。

    一个框架绑定示例

    基于iOS的
    GreenView
    Universal Framework(通过Xcode):
    • 添加名为
      MyView
      子类化
      UIView
      的新Cocoa Touch类:
    MyView.h

    #import <UIKit/UIKit.h>
    
    @interface MyView : UIView {
    }
    
    @end
    
    #import <UIKit/UIKit.h>
    
    FOUNDATION_EXPORT double GreenViewVersionNumber;
    FOUNDATION_EXPORT const unsigned char GreenViewVersionString[];
    
    #import "MyView.h"
    
    GreenView.h

    #import <UIKit/UIKit.h>
    
    @interface MyView : UIView {
    }
    
    @end
    
    #import <UIKit/UIKit.h>
    
    FOUNDATION_EXPORT double GreenViewVersionNumber;
    FOUNDATION_EXPORT const unsigned char GreenViewVersionString[];
    
    #import "MyView.h"
    
    创建
    Xamarin.iOS
    绑定项目:
    • 添加
      GreenView.framework
      作为本机引用
    ApiDefinition.cs

    using UIKit;
    
    namespace GreenViewBinding
    {
        // @interface MyView : UIView
        [BaseType(typeof(UIView))]
        interface MyView
        {
        }
    }
    
    用法:
    • 创建iOS单视图应用程序

    • 添加绑定项目作为引用

    ViewController.cs
    ViewDidLoad
    方法:

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        var view = new GreenViewBinding.MyView();
        view.Frame = new CoreGraphics.CGRect(40, 40, 100, 100);
        Add(view);
    }
    
    输出:

    你能分享完整的来源吗?@jzeferino当然可以。我将快速创建一个github repo。@jzeferino此代码使用的是静态库而不是框架。我在尝试不同的选择。@jzeferino非常感谢^^寿司首先,非常感谢你的帮助。这真的很有帮助。我想我试过了,就像你说的那样。但是运行时错误。我上传了我新的框架版本的完整代码。如果你能查一下这个。。这将是伟大的。再次感谢。和你们唯一不同的是,我并没有使用sharpie,因为我知道一旦你们使用了它,不管我是否使用sharpie。是同一个包装。