2014-09-04 2 views
1

Web-Url을 통해 내 Xamarin.Ios-Project에서 특정보기를 열려고합니다. URL을-방식은 잘 작동하고 아래와 같이 나는 또한 AppDelegate에 클래스의 URL을 확인 :Appelegate의 ViewModel 열기

[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; 
     } 
    } 
} 

어떻게이 시점에서 내 뷰 모델을 표시 할 수 있습니다? 정적 클래스에서 값을 설정하고 다음 뷰가로드 될 때이를 확인하려고했습니다. 그러나 앱이 배경에있을 때 사용자가 URL 스키마 링크를 클릭하면 이벤트 (ViewDidLoad, ViewWillAppear, ..)가 발생하지 않습니다.

도움을 주시면 감사하겠습니다. 덕분에 많은

답변

0

나는 응용 프로그램 (myscheme 호스트 같은 : 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"매개 변수로부터 새로운 뷰 모델을 생성하고 해당 뷰 모델을 뷰 컨트롤러 (뷰 모델을 컨트롤러와 쌍으로 만드는 리졸버를 통해 코드에서 곧바로)에 전달할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 방금 시도했지만 문제는, 내 viewmodel 가진 컨트롤러를 만들 때 ui 올바르게 표시되지 않습니다 (탐색 모음을 볼 수 없습니다). 해결 방법 : AppDelegate-Class에 현재 ViewModel을 저장하고 다른 ViewModel (OpenUrl-Method를 검사 함)을 보여주는 Command를 추가합니다. 그게 잘 작동 해. – Joehl