绑定iOS Xamarin的embedded式框架END UP给予exception?

请帮助我的最后一步。 谢谢。

我testing绑定的iOS本机框架Xamarin库。

  1. 我创build了iOS框架并添加了MyView.h,MyView.m

    • MyView.m

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

    • MyView.h

    @interface MyView:UIView @end

非常简单的框架。

  1. 将MyView.h添加到公共标题中,并为任何体系结构创build通用框架。 这个框架现在已经

    firstfile.h,MyView.h

两个文件作为公共标题

  1. 我创build了iOStesting应用程序(单个VC应用程序),并尝试这个框架。

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

它按我的预期工作。 它画了一个绿色的盒子。

  1. 我创build了Xamarin Library项目,并通过点击鼠标右键并添加文件,将这个框架文件导入本地参考文件夹

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

    [BaseType(typeof(UIView))]接口MyView {[Export(“initWithFrame:”)] IntPtr构造函数(CGRect框架); }

build立好。

  1. 我创build了Xamarin.iOS应用程序,并将此库导入到解决scheme并进行testing。

    MyView v = new MyView(new CGRect(0,0,100,100)); this.View.AddSubview(V);

编好! 但运行时错误。

exception是由调用的目标引发的。

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

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

我的完整源代码在这里: https : //github.com/myallb/test_iosstaticlib_to_xamarin

此代码使用静态库,而不是框架。 我正在尝试不同的select。

框架绑定示例

基于iOS的GreenView通用框架(通过Xcode):

  • 添加一个名为MyView子类化UIView的新的Cocoa Touch类:

MyView.h

 #import <UIKit/UIKit.h> @interface MyView : UIView { } @end 

MyView.m

 #import "GreenView/MyView.h" @implementation MyView - (void)baseInit { self.backgroundColor = [UIColor greenColor]; } - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self baseInit]; } return self; } - (id)initWithCoder:(NSCoder *)aDecoder { if ((self = [super initWithCoder:aDecoder])) { [self baseInit]; } return self; } @end 

GreenView.h

 #import <UIKit/UIKit.h> FOUNDATION_EXPORT double GreenViewVersionNumber; FOUNDATION_EXPORT const unsigned char GreenViewVersionString[]; #import "MyView.h" 

Sharpie示例(要启动ApiDefinition.cs

 sharpie bind -sdk iphoneos9.3 -o GreenViewBinding GreenView.framework/Headers/*.h 

创build一个Xamarin.iOS绑定项目:

  • GreenView.framework添加GreenView.framework机参考

ApiDefinition.cs

 using UIKit; namespace GreenViewBinding { // @interface MyView : UIView [BaseType(typeof(UIView))] interface MyView { } } 

用法:

  • 创build一个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); } 

输出:

在这里输入图像说明