【问题标题】:Open ViewModel from Appdelegate从 Appdelegate 打开 ViewModel
【发布时间】:2014-09-04 08:38:30
【问题描述】:

我正在尝试通过 Web-Url 在我的 Xamarin.Ios-Project 中打开特定视图。 url-scheme 工作正常,我还检查了 AppDelegate 类中的 url,如下所示:

[Register("AppDelegate")]
public partial class AppDelegate : MvxApplicationDelegate
{
    // other methods ...

    public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
    {
        if (url == null) return false;

        var uri = new Uri(url.ToString());
        if(uri.Host.Equals("myscheme-host"))
        {
            var param = GetParameters(uri);

            // What can i do here?
            ShowViewModel<MyViewModel>();

            return true;
        }
    }
}

如何从这一点显示我的 Viewmodel?我试图在静态类中设置一个值,并在下一个视图加载时检查它。但是当应用程序在用户单击 Url-Scheme-Link 之前处于后台时,不会引发任何事件(ViewDidLoad、ViewWillAppear、..)。

感谢任何帮助。非常感谢

【问题讨论】:

    标签: xamarin.ios xamarin viewmodel mvvmcross appdelegate


    【解决方案1】:

    我正在使用自定义方案来启动应用程序(类似于 myscheme-host:xxxx),所以我在 OpenUrl 上写的内容是这样的:

        public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
        {
            if (url.AbsoluteString.StartsWith("myscheme-host:"))
            {
                this.window.RootViewController = new MySchemeViewController();
    

    在您的情况下,您可能会从“xxxx”参数创建一个新的视图模型并将该视图模型传递给视图控制器(无论是直接来自代码还是通过将视图模型与控制器配对的解析器) .

    【讨论】:

    • 感谢您的回答。我刚刚尝试过,但问题是,当我使用我的视图模型创建控制器时,ui 没有正确显示(导航栏不可见)。解决方案:我将当前 ViewModel 保存在 AppDelegate-Class 中,然后向其中添加一个命令,它显示了一个不同的视图模型(我在 OpenUrl-Method 上检查)。这对我来说很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多