【发布时间】:2021-06-14 16:08:17
【问题描述】:
我为 iOS 创建了一个绑定库,使用 Sharpie 绑定生成了一个 APIDefintions 和 StructsAndEnums 类,添加了对绑定库的本机引用,相应地设置了框架属性,并将绑定库的本机引用添加到 iOS 项目.
在 AppDelegate 类中,我尝试初始化 ViewController,但应用程序崩溃并显示以下消息:
致命错误:对“Qualtrics.QualtricsSurveyViewController”类使用未实现的初始化程序“init(nibName:bundle:)”
这是我的 VC 代码:
public partial class QualtricsViewController : QualtricsSurveyViewController
{
public QualtricsViewController(NSString nibNameOrNil, NSNumber bundle) : base(nibNameOrNil, bundle)
{
this.Init();
}
public QualtricsViewController(NSCoder coder) : base(coder)
{
base.Init();
}
public QualtricsViewController()
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
var btn = UIButton.FromType(UIButtonType.System);
btn.Frame = new CGRect(20, 200, 280, 44);
btn.SetTitle("Click Me", UIControlState.Normal);
var user = new UIViewController();
btn.TouchUpInside += (sender, e) => {
this.NavigationController.PushViewController(user, true);
};
}
}
在 AppDelegate 类中,我这样称呼它:
var qualtricsVC = new QualtricsViewController();
我对设置 Native Bindings 比较陌生。我的 Native Binding 项目编译正确,一切似乎都很好,直到我调用 QualtricsSurveyViewController。任何帮助,将不胜感激。提前致谢!
【问题讨论】:
-
我注意到没有参数的构造函数不会调用
this.Init();或base.Init();。它也不是从基类构造函数继承的——不是: base()。这可能意味着构造函数仅用于某些特殊目的,并且您需要调用其他两个构造函数之一才能使其正常工作。我相信这不是 xamarin 问题,而是一个问题“how to correctly use/subclass QualtricsSurveyViewController”。因此,请查找该类或包含它的模块/nuget/任何内容的文档。可能那些将是native ios docs,而不是特定于 xamarin。
标签: swift objective-c xamarin xamarin.forms xamarin.ios