MonoTouch.Foundation.MonoTouchException已经抛出了Objective-Cexception。 名称:NSInternalInconsistencyException

当我在Xamarin中运行我的iOS应用程序时,我似乎遇到了这个问题。

MonoTouch.Foundation.MonoTouchException has been thrown Objective-C exception thrown. Name: NSInternalInconsistencyException Reason: Could not load NIB in bundle: 'NSBundle ... (loaded)' with name 'RouteMeViewController' 

我正在尝试用一个RouteMeViewController来replace一个GoogleMapsViewController,在一个应用程序中使用Objective C库和Binder进行工作。 我的AppDelegate看起来像这样:

 namespace ExampleApp.iOS { [Register ("AppDelegate")] public partial class AppDelegate : UIApplicationDelegate { UIWindow window; RouteMeViewController viewController; public override bool FinishedLaunching (UIApplication app, NSDictionary options) { window = new UIWindow (UIScreen.MainScreen.Bounds); viewController = new RouteMeViewController (); window.RootViewController = viewController; window.MakeKeyAndVisible (); return true; } } 

RouteMeViewController

 namespace ExampleApp.iOS { public partial class RouteMeViewController : UIViewController { RMMapView MapView { get; set; } public RouteMeViewController () : base ("RouteMeViewController", null) { } public override void ViewDidLoad () { base.ViewDidLoad (); MapView = new RMMapView(View.Frame, new RMOpenStreetMapSource().Handle); MapView.AutoresizingMask = UIViewAutoresizing.FlexibleDimensions; if (UIScreen.MainScreen.Scale > 1.0) MapView.AdjustTilesForRetinaDisplay = true; Add (MapView); } } 

}

任何帮助或方向非常感谢,谢谢!

看起来你错过了解决scheme资源中的devise器文件。 即使以编程方式创build控件和视图,也需要一个devise器文件,即使它只是一个空的devise器文件。 对于IOS,你可以使用XCode。 您可以创build扩展名为.xib的文件。 它们将在您的设备上编译,生成的文件的扩展名为.nib。 确保.xib文件的目标是你的项目的正确的viewController,否则你仍然会得到错误。

我希望这有帮助。 祝你好运!