Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross에서 내비게이션 프로세스를 사용자 정의 할 수 있습니까?


MVVMCross에서 내비게이션 프로세스를 사용자 정의 할 수 있습니까?


예, MVVMCross에서 내비게이션 프로세스를 사용자 정의 할 수 있습니다. 다음은이를 달성하는 방법에 대한 자세한 개요입니다.

내비게이션 사용자 정의

MVVMCross는 뷰 모델 우선 내비게이션 접근법을 사용합니다. 여기서 뷰 모델간에 내비게이션이 발생합니다. 이를 통해 플랫폼 독립적 인 내비게이션 로직이 가능하므로 iOS 및 Android와 같은 다른 플랫폼에서 복잡한 탐색 흐름을보다 쉽게 ​​관리 할 수 ​​있습니다.

사용자 정의보기 발표자를 사용합니다

내비게이션을 사용자 정의하는 한 가지 방법은 사용자 정의보기 발표자를 사용하는 것입니다. MVVMCross는 각 플랫폼에 대한 기본보기 발표자를 제공하지만이를 무시하여 탭 디스플레이, 대화 상자 또는 햄버거 메뉴와 같은 사용자 정의 탐색 패턴을 구현할 수 있습니다. 이를 위해 플랫폼 별 발표자 (예 : Xamarin.forms의`mvxformspagePresenter`)에서 상속되는 사용자 정의 발표자 클래스를 만들고 'CreateNavigationPage'와 같은 메소드를 사용하여 사용자 정의 탐색 구성 요소를 사용합니다 [2] [9].

내비게이션 이벤트가 가로 채기

`IMVXNAVIGATIONSERVICE`에서 제공하는 이벤트를 가로 채서 내비게이션을 사용자 정의 할 수도 있습니다. 이 서비스는`beforenavigate`,`offoreclose`,`beforeclose` 및`apjclose`와 같은 여러 이벤트를 제공하므로 내비게이션 프로세스의 여러 단계에서 사용자 정의 로직을 실행할 수 있습니다. 예를 들어,이 이벤트를 사용하여 뷰 모델 사이를 탐색하기 전후에 추가 확인 또는 업데이트를 수행 할 수 있습니다 [1].

URI Navigation 및 Deep Linking

MVVMCross는 URI Navigation을 지원하여 어셈블리 속성을 사용하여 뷰 모델의 경로를 정의 할 수 있습니다. 이 기능을 사용하면 앱의 특정 부분에 외부 링크 또는 알림에서 직접 액세스 할 수있는 딥 링크가 가능합니다. ViewModel 당 여러 URI를 정의하고 "NavigationFacades"를 사용하여 URI 매개 변수를 기반으로 탐색 할 뷰 모델을 동적으로 결정할 수 있습니다 [1].

사용자 정의 내비게이션 로직

보다 복잡한 시나리오의 경우 뷰 모델 내에서 사용자 정의 탐색 로직을 구현할 수 있습니다. 예를 들어, 'Cannavigate'메소드를 사용하여 내비게이션을 시도하기 전에 항해가 가능한지 확인할 수 있습니다. 또한 매개 변수 객체를 사용하여`showViewModel '메소드를 사용하여 뷰 모델간에 매개 변수를 전달하여 앱의 다른 부분간에 데이터를 전송할 수 있습니다 [1] [4].

사용자 정의 앱 스타트

마지막으로, 'startup'메소드를 사용자 정의 'AppStart'클래스에서 재정의하여 앱의 초기 탐색을 사용자 정의 할 수 있습니다. 이를 통해 사용자 로그인 상태 또는 운영 체제에서 전달 된 매개 변수와 같은 조건을 기반으로 탐색 할 뷰 모델을 동적으로 결정할 수 있습니다 [4].

전반적으로 MVVMCross는 내비게이션을 사용자 정의 할 수있는 유연한 프레임 워크를 제공하여 개발자가 특정 응용 프로그램 요구에 맞게 조정할 수 있습니다.

인용 :
[1] https://www.mvvmcross.com/documentation/fundamentals/navigation
[2] https://stackoverflow.com/questions/59814748/how-to-ouse-custom-navigationpage-with-mvvmcross-library-in-xamarin-forms
[3] https://stackoverflow.com/questions/43681201/custom-navigation-controller-in-an-mvmcross-app
[4] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-tip-calc-navigation
[5] https://github.com/mvvmcross/mvvmcross/issues/4032
[6] https://softwareengineering.stackexchange.com/questions/120090/who-should-control-navigation-in-an-mvvm-application
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[9] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[10] https://nicksnettravels.builttoroam.com/post-2019-03-24-viewmodel-to-viewmodel-navigation-in-a-xamarinforms-plication-with-prism 및 mvvmcross-aspx/