2014-04-08 4 views
0

MvvmCross를 사용하여 빌드 된 응용 프로그램에서 BTProgressHUD Xamarin 구성 요소를 사용하고 있습니다. 현재 iOS 버전의 앱에서 작업 중입니다. 내 ViewModels는 여러 웹 서비스 호출을 만들고 관련보기가 바인딩되어있는 'IsBusy'속성을 노출하여 진행률 회 전자를 표시하거나 숨 깁니다. 이것은 N = 34 MvvmCross 샘플 (https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-34-Progress)에서 설정하는 것과 거의 같습니다.MvvmCross : ViewModel 생성 직후에 BTProgressHUD 스피너 표시

어떤 경우에는 ViewModel이 생성되는 즉시 자동으로 서비스를 호출해야하는 문제가 있습니다. ViewModel의 Start() 함수에서 호출을 시도했지만 BTProgressHUD 회 전자가 뷰 상단에 표시되지 않는 것으로 나타났습니다. BTProgressHUD는 뷰가 가시화 된 후에 만 ​​표시되어야하며, ViewModel.Start()가 실행될 때는 그렇지 않을 수도 있습니다.

이전에이 문제가 발생 했습니까? 뷰가 가시화 된 후에 ViewModel에서 코드를 실행하는 간단한 방법이 있습니까?

감사합니다.

답변

0

보기가 가시화 된 후에 ViewModel에서 코드를 실행하는 간단한 방법이 있습니까?

N = 42 비디오 - http://slodge.blogspot.co.uk/2013/11/n42-is-my-viewmodel-visible-can-i-kill.html은 - 당신의 View에서이 전화를 당신의 일이다 - - 당신이 당신의 ViewModel에 추가 할 수 IVisible 인터페이스를 소개하지만이 각 플랫폼에 쉽게 할 수 있습니다. 예를 들어, iOS에서는/ViewDidDisappearhttps://github.com/MvvmCross/NPlus1DaysOfMvvmCross/blob/master/N-42-Lifecycles/Lifecycle.Touch/Views/FirstView.cs

protected IVisible VisibleViewModel 
    { 
     get { return base.ViewModel as IVisible; } 
    } 

    public override void ViewDidAppear(bool animated) 
    { 
     base.ViewDidAppear(animated); 
     VisibleViewModel.IsVisible(true); 
    } 

    public override void ViewDidDisappear(bool animated) 
    { 
     base.ViewDidDisappear(animated); 
     VisibleViewModel.IsVisible(false); 
    } 
에서
관련 문제