Master-Details-Page (SplitView) для iOS -App с Xamarin и MVVMCross 6 - PullRequest
0 голосов
/ 07 февраля 2020

В настоящее время я разрабатываю iOS -App с Xamarin и MVVMCross 6 , и я хотел бы создать «SplitView».

Skatch

SplitView должен состоять из мастер-страницы и страницы сведений. В портретном режиме должна отображаться только главная страница ИЛИ страница с подробностями.

Если экран устройства достаточно большой, должны отображаться обе страницы. Страница «Сведения» должна измениться при выполнении действия на главной странице.

Было бы неплохо, если бы кто-то кратко объяснил, какие элементы раскадровки, представления, модели представления и элементы навигации необходимы для реализации такого SplitView. .

Просьба не просто ссылаться на страницу: https://www.mvvmcross.com/documentation/plugins/ios-sidebar?scroll=1300

Спасибо и наилучшими пожеланиями

Дополнение: Что я сделал до сих пор. Я часто осуществлял «нормальную» навигацию с одной страницы на другую без проблем. Я использовал конструктор для размещения SplitViewController на StoryBoard. Затем я создал файл .cs для каждого контроллера (например, RootViewController.cs).

StoryBoard

Представления выглядят так:

[MvxFromStoryboard("LaunchScreen")]
public partial class MasterViewController : MvxViewController<MasterViewModel>

Затем я создал Root, Master и Detail ViewModel. При переходе к RootViewModel

await _navigationService.Navigate<RootViewModel>();

Но затем я получаю следующую ошибку:

$ exception {System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта в MvvmCross .ViewModels.MvxViewModelLoader. : 62 at MvvmCross.Platforms. Ios .Views.MvxViewControllerExtensions.LoadViewModel (MvvmCross.Platforms. Ios .Views.IMvxIosView iosView) [0x0004d] в D: \ a \ 1 \ s \ MvvmCross \ Platforms \ MvxViewControllerExtensions.cs: 36 в MvvmCross.Views.MvxViewExtensions.OnViewCreate (MvvmCross.Views.IMvxView view, System.Func`1 [TResult] viewModelLoader) [0x00012] в D: \ a \ 1 \ s \ Mvs. .cs: ​​24 на MvvmCross.Platforms. Ios .Views.MvxViewControllerExtensions.OnViewCreate (MvvmCross.Platfor ms. Ios .Views.IMvxIosView iosView) [0x00000] в D: \ a \ 1 \ s \ MvvmCross \ Platforms \ Ios \ Views \ MvxViewControllerExtensions.cs: 17 в MvvmCross.Platforms. Ios .Views.MvxViewControllerAdapter. HandleViewDidLoadCalled (отправитель System.Object, System.EventArgs e) [0x00000] в D: \ a \ 1 \ s \ MvvmCross \ Platforms \ Ios \ Views \ MvxViewControllerAdapter.cs: 24 в (делегат-вызов-оболочка) .invoke_void_gsjectEvent System.EventArgs) в MvvmCross.Base.MvxDelegateExtensions.Raise (System.EventHandler eventHandler, System.Object отправитель) [0x00000] в D: \ a \ 1 \ s \ MvvmCross \ Base \ MvxDelegateExtensions.cs: 13 в Mvm. Ios .Views.Base.MvxEventSourceViewController.ViewDidLoad () [0x00006] в D: \ a \ 1 \ s \ MvvmCross \ Platforms \ Ios \ Views \ Base \ MvxEventSourceViewController.cs: 62 в MvvmCross.Platforms. * 1056. * 1056. Views.MvxViewController.ViewDidLoad () [0x00000] в D: \ a \ 1 \ s \ MvvmCross \ Platforms \ Ios \ Views \ MvxViewController.cs: 60 в (управляемая оболочка является родной) ObjCRuntime.Messaging.void_objc_msgSend (int) IntPtr, intptr)
в UIKit.UIWindow.set_RootViewController (значение UIKit.UIViewController) [0x0000d] в /Library/Frameworks/Xamarin.iOS.framework/Versions/13.10.0.17/src/Xamarin.iOS/UIindow. cs: 394 в MvvmCross.Platforms. Ios .Presenters.MvxIosViewPresenter.SetWindowRootViewController (контроллер UIKit.UIViewController, MvvmCross.Platforms. Ios. Презентаторы. Атрибуты. \ MvvmCross \ Platforms \ Ios \ Presenters \ MvxIosViewPresenter.cs: 624 в MvvmCross.Platforms. Ios .Presenters.MvxIosViewPresenter.SetupWindowRootNavigation (UIKit.UIViewController viewController, Mvv. Platforms. Ios .Presenters.Attributes.MvxRootPresentationAttribute attribute) [0x00023] в D: \ a \ 1 \ s \ MvvmCross \ Platforms \ Ios \ Presenters \ MvxIosViewPresenter.cs: 260 в MvvmCross.Platforms. * 1062. * 1062. MvxIosViewPresenter.ShowRootViewController (UIKit.UIViewController viewController, MvvmCross.Platforms. Ios .Presenters.Attributes.MvxRootPresentationAttribute атрибут, MvvmCross.ViewModels.l \ z \ in \ mx_m_m_m_m_m_m_m_m_m_s_M_S_W_S_M_S_W_S_WD_MS_M_S_W_S_W_S_W_W_M_S_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_W_0_2 Presenters \ MvxIosViewPresenter.cs: 198} System.NullReferenceException

Спасибо и наилучшими пожеланиями.

...