从Appdelegate打开ViewModel

时间:2014-09-04 08:38:31

标签: xamarin.ios xamarin viewmodel mvvmcross appdelegate

我正在尝试通过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?我试图在静态类中设置一个值,并在下一个视图加载时检查它。但当应用程序在后台bevore时,用户点击了Url-Scheme-Link,没有任何事件(ViewDidLoad,ViewWillAppear,..)将会升起。

感谢任何帮助。非常感谢

1 个答案:

答案 0 :(得分:0)

我正在使用自定义方案来启动应用程序(类似于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”参数创建一个新的视图模型,并将该视图模型传递给视图控制器(无论是直接来自代码还是通过将视图模型与控制器配对的解析器)