MVVMCross에서 ViewPresenter의 역할
MVVMCross의 ViewPresenter는 응용 프로그램 내에서보기 및보기 제시를 관리하는 데 중요한 역할을합니다. 그들은보기가 어떻게 표시되는지 결정할 책임이 있으며, 이는 다른 플랫폼에서 강력하고 유연한 사용자 인터페이스를 생성하는 데 필수적입니다.
주요 책임
1. 내비게이션 관리 : ViewPresenter는보기 간의 탐색을 처리합니다. 그들은 전체 화면 활동, 조각 또는 모달 대화 상자로 표시되어야하는지 여부를 제시 해야하는 방법을 결정합니다. 이것은 Xamarin.forms와 기본보기가 모두 사용되는 하이브리드 응용 분야에서 특히 중요합니다 [1] [3].
2. 사용자 정의 : MVVMCross를 통해 개발자는 사용자 정의 뷰 프리 센터를 만들 수 있습니다. 이 사용자 정의는 Xamarin.forms와 같은 다양한 UI 프레임 워크를 기본 Android 또는 iOS 구성 요소와 통합 할 때 필요합니다. 예를 들어, Android의 Xamarin.forms 응용 프로그램에서 양식과 기본 Android보기를 모두 관리하려면`mvxformsdroidpagepresenter`와 같은 사용자 정의 발표자를 만들어야 할 수도 있습니다 [1].
3. 수명주기 관리 : ViewPresenters는 그들이 관리하는 활동이나 견해의 수명주기를 알고 있어야합니다. 이것은 Android 용`IMVXANDROIDCURRENTTOPACTIVITY '와 같은 인터페이스를 통해 달성되며, 이는 현재 최고 활동을 추적하고 수명주기 이벤트를 관리하는 데 도움이됩니다 [1].
4. 프레젠테이션 속성 : MVVMCross는 프레젠테이션 속성을 사용하여 뷰가 제시되는 방법을 사용자 정의합니다. 예를 들어,`mvxfragmentPresentationAttribute`를 사용하면 단편이 활동 또는 다른 조각 내에서 호스팅되어야하는지 여부를 지정하여 UI 설계의 유연성을 제공합니다 [3].
5. 확장 성 : ViewPresenter 시스템은 확장 가능합니다. 개발자는`mvxbasepresentationAttribute '를 확장하여 새로운 프레젠테이션 속성을 만들 수 있고'mvxAndroidviewPresenter` 또는 'mvxAppCompatViewPresenter`와 같은'MVXANDRODVIEWPRESENTER '[3]와 같은 기존 발표자를 서브 클래스하여 프레젠테이션 로직을 사용자 정의 할 수 있습니다.
구현
MVVMCross에서 사용자 정의 뷰 프리 센터를 구현하려면 일반적으로 다음을 수행해야합니다.
-`createViewPresenter '메소드를 대체하십시오 : 플랫폼 별 설정 클래스 (예 :`setup.cs`를 위해`setup.cs`) 에서이 방법을 무시하여 사용자 정의 발표자를 반환합니다.
- 발표자 등록 : 응용 프로그램 설정 중에 사용자 정의 발표자가 MVVMCross에 등록되어 있는지 확인하십시오.
- 프리젠 테이션 로직 구현 : 응용 프로그램의 요구 사항에 따라 뷰를 제시 해야하는 방식을 정의합니다.
예제 사용 사례
Xamarin.forms 및 기본 Android 활동을 모두 사용하는 하이브리드 응용 프로그램을 고려하십시오. 양식 페이지와 기본 활동 간의 탐색을 처리하기 위해`mvxformsdroidpagepresenter`와 같은 사용자 정의 발표자를 만듭니다. 이 발표자는``mvxandroidviewpresenter ''로 비 포형 호출을 리디렉션하여 두 UI 프레임 워크의 원활한 통합을 보장합니다 [1].
요약하면, MVVMCross의 ViewPresenters는 View Navigation 및 Presentation을 관리하는 데 필수적이며 복잡한 크로스 플랫폼 응용 프로그램을 개발하는 데 중요한 유연성 및 사용자 정의 옵션을 제공합니다.
인용 :[1] https://stackoverflow.com/questions/35912706/mvvmcross-hybrid-xamarin-forms-and-denroid-activity-application
[2] https://stackoverflow.com/questions/71959649/does-mvvmcross-ave-built-inmessage-for-viewmodel-tell-view when-viewappea
[3] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[4] https://canbilgin.wordpress.com/tag/mvvmcross/
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?view=net-maui-9.0
[7] https://github.com/mvvmcross/mvvmcross/blob/develop/mvvmcross/platforms/ios/presenters/mvxiosviewpresenter.cs
[8] https://stackoverflow.com/questions/11041605/why-does-mvxmodalsupporttouchviewpresenter-in-mvmcross-support-on-modal-v