xamarin 错误:NSInternalInconsistencyException 原因:应用程序窗口应在应用程序结束时具有根视图控制器

Posted

技术标签:

【中文标题】xamarin 错误:NSInternalInconsistencyException 原因:应用程序窗口应在应用程序结束时具有根视图控制器【英文标题】:xamarin error : NSInternalInconsistencyException Reason: Application windows are expected to have a root view controller at the end of application 【发布时间】:2021-04-14 11:07:23 【问题描述】:

我正在尝试重新组织用 Xamarin 编写的旧应用程序。该应用程序在未在模拟器中打开应用程序的情况下给出以下错误。你能帮帮我吗?

抛出了 Objective-C 异常。名称:NSInternalInconsistencyException 原因:应用程序窗口在应用程序启动结束时应该有一个根视图控制器 本机堆栈跟踪: 0 核心基础 0x00007fff20421af6 __exceptionPreprocess + 242 1 libobjc.A.dylib 0x00007fff20177e78 objc_exception_throw + 48 2 核心基础 0x00007fff2042191f +[NSException raise:format:] + 0 3 基础 0x00007fff2077156a -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 191 4 UIKitCore 0x00007fff2469a8fc-[UIApplication_runWithMainScene:transitionContext:completion:] + 2148 5 UIKitCore 0x00007fff23cc36f7 -[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] + 122 6 UIKitCore 0x00007fff24251d1e _UIScenePerformActionsWithLifecycleActionMask + 88 7 UIKitCore 0x00007fff23cc4206 __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke + 198 8 UIKitCore 0x00007fff23cc3cca -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 474 …… enter image description here

【问题讨论】:

您是在 xamarin.forms 还是 xamarin.ios 中开发应用程序? 请不要创建代码图像。它违反了 SO 准则。您可以使用 markdown 轻松地在 SO 中编写代码。 xamarin.ios 开发 【参考方案1】:

iOS9 要求所有的 Window 必须有一个 rootViewController,你应该像这样编辑 AppDelegate:

public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
        
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method

            var indexVC = new IndexViewController ();
            window = new UIWindow ((CGRect)UIScreen.MainScreen.Bounds);
            window.RootViewController = indexVC;
            window.MakeKeyAndVisible ();


            return true;
        

您可以参考this page了解更多详情。

从ios9开始有一些变化,可以参考this和this页面

【讨论】:

嗨史蒂文,感谢您的回复。我仍然有问题,我无法解决它。 var indexVC = new customViewController(); window = new UIWindow((CGRect)UIScreen.MainScreen.Bounds); window.RootViewController = indexVC; window.MakeKeyAndVisible();公共部分类 customViewController: UIViewController public customViewController(IntPtr handle) : base(handle) public customViewController(NSCoder coder) : base(coder) public customViewController() : base("customViewController", null) 公共覆盖bool ShouldAutorotateToInterfaceOrientation UIInterfaceOrientation toInterfaceOrientation) return true;

以上是关于xamarin 错误:NSInternalInconsistencyException 原因:应用程序窗口应在应用程序结束时具有根视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms:Android 项目构建错误 - AppData\Local\Xamarin 文件夹中缺少文件

Xamarin:捆绑签名的错误证书

Xamarin - 找不到编码错误 1252 数据

无法在 xamarin.forms 上运行 XAMARIN UI TEST,错误 System.Exception

错误 ITMS-90685:CFBundleIdentifier 冲突。 CFBundleIdentifier 值为“xamarin.ios.xamarin-framework”的捆绑包不止一个

Xamarin.iOS - 错误 ITMS-90502:捆绑包无效