gpt4 book ai didi

Xamarin.Forms for iOS 使用 SceneDelegate.cs

转载 作者:行者123 更新时间:2023-12-04 10:06:57 24 4
gpt4 key购买 nike

在 iOS 13 中,使用 UIScene。 AppDelegate.cs 中的代码必须移动到 SceneDelegate.cs 中才能在拆分 View 中支持同一应用程序的多个窗口。

对于 Xamarin.Forms,AppDelegate.cs 使用 LoadApplication (new App()) 在 Xamarin.Forms 中启动 App.cs 的实例。 LoadApplication 位于 Xamarin.Forms.Platform.iOS.FormsApplicationDelegate 中。

在 Xamarin.Forms 中启动 App.cs 实例在 SceneDelegate.cs 中的等效项是什么?

最佳答案

来自 the app lifecycle xamrin 形式:

  • iOS Main method > AppDelegate > App > ContentPage .
  • 安卓MainActivity > App > ContentPage

  • 我们会看到 Main method调用 App类之前,如果需要一个来自iOS的App实例,一般会尝试如下:
    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
    global::Xamarin.Forms.Forms.Init();
    LoadApplication(new App(app)); // pass app to Forms

    return base.FinishedLaunching(app, options);
    }

    但是,Forms 不能使用 UIKit (错误截图)。

    enter image description here

    在 xamarin 形式中,有 DependencyService加载 navtive 方法。因此,建议使用 依赖服务 调用 app来自 iOS 原生 AppDelegate.cs .

    关于使用 SceneDelegate.cs在 Xamarin Forms 中,没有 SceneDelegate.cs现在在 iOS 解决方案中的文件。我将检查是否可以在 Xamarin Forms 中使用。

    ==================================更新============== ================

    如果要处理 AppDelegate.cs中的通用链接, 你需要在 continueUserActivity 做一些事情方法如下:
    public override bool ContinueUserActivity(UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler)
    {
    //return base.ContinueUserActivity(application, userActivity, completionHandler);
    if(userActivity.ActivityType == NSUserActivityType.BrowsingWeb)
    {
    NSUrl url = userActivity.WebPageUrl;
    // other code
    }
    return true;
    }

    ==================================更新============== ================

    最后,发现可以添加 SceneDelegate到 Xamarin Forms 项目。新的 Xamarin Forms 项目未附带必要的 SceneDelegate.cs或 .storyboard 文件,因此需要添加这些文件。添加这些文件后, info.plist 需要更新 UIApplicationSceneManifest键,其中将包含更多需要的键。

    info.plist 的补充显示在此处: https://docs.microsoft.com/en-us/xamarin/ios/platform/ios13/multi-window-ipad#project-configuration (只是 UIApplicationSceneManifest 及其下的所有内容)

    需要注意的两点是:
  • 当应用程序的多个窗口运行时,该示例存在导航无法正常工作的问题。
  • 这不是官方示例,因为 Xamarin.Forms 目前不提供对在 iOS 应用程序中使用多个场景的官方支持。

  • 非官方 Xamarin.Forms 示例在此处: https://www.dropbox.com/s/sdxq5me7vcdmuf9/XamFormsiOSMultiWindow.rar?dl=0

    关于Xamarin.Forms for iOS 使用 SceneDelegate.cs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61539391/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com