You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以Xamarin.iOS传统方式,用Storyboard启动iOS MAUI应用?

如何用Storyboard启动MAUI应用(无XAML初始启动步骤)

核心实现逻辑

MAUI默认以跨平台XAML页面作为启动入口,要复用Xamarin.iOS的Storyboard原生启动逻辑,需直接修改iOS平台的原生入口代码,绕开MAUI默认的跨平台启动流程。

具体操作步骤

  • 添加并配置Storyboard文件
    将原Xamarin.iOS项目中的Storyboard文件(如Main.storyboard)复制到MAUI项目的Platforms/iOS目录下,设置文件的Build Action为BundleResource,同时确保Storyboard内已勾选初始ViewController的Is Initial View Controller选项。

  • 修改iOS项目的Info.plist
    在Info.plist中添加或修改UIMainStoryboardFile键,将值设为你的Storyboard文件名(无需.storyboard后缀);移除或注释掉MAUI默认的UIApplicationDelegateClassName配置,避免启动逻辑冲突。

  • 替换iOS平台启动代码
    打开Platforms/iOS/AppDelegate.cs,重写FinishedLaunching方法,完全使用原生逻辑启动:

    using UIKit;
    
    namespace YourAppNamespace.iOS;
    
    [Register("AppDelegate")]
    public class AppDelegate : UIApplicationDelegate
    {
        public override UIWindow? Window { get; set; }
    
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // 初始化应用窗口
            Window = new UIWindow(UIScreen.MainScreen.Bounds);
            // 从Storyboard加载初始视图控制器
            var storyboard = UIStoryboard.FromName("Main", null);
            var initialVC = storyboard.InstantiateInitialViewController();
            Window.RootViewController = initialVC;
            // 显示窗口
            Window.MakeKeyAndVisible();
            return true;
        }
    }
    

    删除或注释掉原文件中与MauiProgram、CreateMauiApp相关的代码,彻底脱离MAUI默认启动流程。

  • 可选:兼容MAUI跨平台功能
    若后续需要在原生页面中调用MAUI的跨平台API,可在FinishedLaunching方法中初始化MAUI环境(需放在设置RootViewController之前):

    MauiProgram.CreateMauiApp().Build().Run(null);
    

Xamarin.iOS原生项目迁移注意点

  • 原项目中的ViewController、View等原生代码可直接复制到MAUI的Platforms/iOS目录下,保持原有命名空间和结构即可运行。
  • 原生依赖库(如CocoaPods)的配置方式与Xamarin.iOS项目一致,直接在MAUI的iOS项目中同步配置即可。

内容的提问来源于stack exchange,提问作者Agat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:38:19