2013-01-21 1 views
0

스택에서 활동을 제거하는 방법을 찾으려고합니다. 우리의 응용 프로그램에는 다음과 같은 흐름이 있습니다 : activity/viewmodel a -> activity/viewmodel b -> activity/뷰 모델 c. c에서 사용자는 날짜를 선택하거나 뒤로 돌아갈 수 있습니다. 그가 돌아 가면 그는 b로 돌아 가야합니다. 그러나 그가 날짜를 선택하면 그는 새로운 activity/viewmodel b 인스턴스로 옮겨지고 "old"activity/viewmodel 인스턴스는 더 이상 사용되지 않으므로 제거해야합니다.Mono droid를 사용하여 스택에서 활동을 제거하고 mvvmcross를 slodge하십시오.

Stuart Lodge의 제안은 RequestRemoveBackStep()을 사용하는 것이었지만이를 사용하는 방법은 확실하지 않고 예제를 찾을 수 없습니다.

누구나 올바른 방향으로 나를 가리킬 수 있습니까?

감사

답변

1

RequestRemoveBackStep() 방법은 IMvxViewDispatcher 인터페이스의 멤버이며, 일부 플랫폼에서 구현됩니다

public interface IMvxViewDispatcher : IMvxMainThreadDispatcher 
{ 
    bool RequestNavigate(MvxShowViewModelRequest request); 
    bool RequestClose(IMvxViewModel whichViewModel); 
    bool RequestRemoveBackStep(); 
} 

는 전혀 간단하지, 그러나

https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross/Interfaces/Views/IMvxViewDispatcher.cs에서이 항상 작업을 수행 할 수 있습니다. .. Droid에서 예를 들어, 그것은 현재 다음과 같이 구현됩니다 :

public bool RequestRemoveBackStep() 
    { 
     // not supported on Android? Not sure how to do this currently... 
     return false; 
    } 

https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Droid/Views/MvxAndroidViewDispatcher.cs

이 기능에 대해 기록 된 문제가 있습니다. 예 : https://github.com/slodge/MvvmCross/issues/80 -하지만이 기능이 향후 Mvx 구현에서 단순히 삭제 될 수 있습니다. 특히 모든 플랫폼에서 모든보기에 대해 그렇게하기가 쉽지는 않습니다.


지금 이러한 유형의 기능이 필요한 경우, 당신은 ...이 기능을 구현하는 어떤 특정 사용 사례에 따라 자신 만의 방법을 찾아야합니다은 (미안 - 현재 사용의 세부 사항 이 질문에서 나에게 명확하지 않은 경우).

을 포함하여 사용할 수있는 여러 가지 기술적 인 경로가 있습니다

RequestClose(oldviewModel) 통화 로직을 추가
  • 를 사용 NoHistory 플래그
  • 를 사용
    • 전망이 자신을 닫습니다 요청할 Messenger을 사용하여 Presenter
    • 에가.
  • +0

    안녕하세요 스튜어트에게 제안 해 주셔서 감사합니다. 이벤트를 사용하여 뷰를 닫으라는 요청이 종료되었습니다. RequestRemoveBackStep()을 사용하고 싶었지만 모든 플랫폼에서 구현하기가 어렵다는 것을 알고 있습니다 :) 우리 구현에서는 이제 모노 터치와 모노 드로이드에서 뷰를 제거하는 사용자 정의 방법을 사용할 수 있습니다. 핵심 구현 – Bjarke

    +0

    @Bjarke 당신은 같은 코드를 공유 할 수 있습니까? – aamankhaan

    관련 문제