private static IMvxViewModel LoadViewModel(this IMvxTvosView tvOSView) { if (tvOSView.Request == null) { MvxLog.Instance.Trace( "Request is null - assuming this is a TabBar type situation where ViewDidLoad is called during construction... patching the request now - but watch out for problems with virtual calls during construction"); tvOSView.Request = Mvx.Resolve <IMvxCurrentRequest>().CurrentRequest; } var instanceRequest = tvOSView.Request as MvxViewModelInstanceRequest; if (instanceRequest != null) { return(instanceRequest.ViewModelInstance); } var loader = Mvx.Resolve <IMvxViewModelLoader>(); var viewModel = loader.LoadViewModel(tvOSView.Request, null /* no saved state on tvOS currently */); if (viewModel == null) { throw new MvxException("ViewModel not loaded for " + tvOSView.Request.ViewModelType); } return(viewModel); }
private static IMvxViewModel LoadViewModel(this IMvxTvosView iosView) { #warning NullViewModel needed? // how to do N //if (typeof (TViewModel) == typeof (MvxNullViewModel)) // return new MvxNullViewModel() as TViewModel; if (iosView.Request == null) { MvxTrace.Trace( "Request is null - assuming this is a TabBar type situation where ViewDidLoad is called during construction... patching the request now - but watch out for problems with virtual calls during construction"); iosView.Request = Mvx.Resolve <IMvxCurrentRequest>().CurrentRequest; } var instanceRequest = iosView.Request as MvxViewModelInstanceRequest; if (instanceRequest != null) { return(instanceRequest.ViewModelInstance); } var loader = Mvx.Resolve <IMvxViewModelLoader>(); var viewModel = loader.LoadViewModel(iosView.Request, null /* no saved state on tvOS currently */); if (viewModel == null) { throw new MvxException("ViewModel not loaded for " + iosView.Request.ViewModelType); } return(viewModel); }
public virtual void Show(IMvxTvosView view) { var viewController = view as UIViewController; if (viewController == null) throw new MvxException("Passed in IMvxTvosView is not a UIViewController"); if (this.MasterNavigationController == null) this.ShowFirstView(viewController); else this.MasterNavigationController.PushViewController(viewController, true /*animated*/); }
protected virtual void InitializePaging() { IMvxPageViewModel pageVM = ViewModel as IMvxPageViewModel; if (pageVM == null) { return; } IMvxPagedViewModel defaultVM = pageVM.GetDefaultViewModel(); UIViewController defaultVC = GetViewControllerForViewModel(defaultVM); SetViewControllers(new UIViewController[] { defaultVC }, UIPageViewControllerNavigationDirection.Forward, true, null); GetNextViewController = delegate(UIPageViewController pc, UIViewController rc) { IMvxTvosView rcTV = rc as IMvxTvosView; if (rcTV == null) { return(null); } IMvxPagedViewModel currentVM = rcTV.ViewModel as IMvxPagedViewModel; if (currentVM == null) { return(null); } IMvxPagedViewModel nextVM = pageVM.GetNextViewModel(currentVM); if (nextVM == null) { return(null); } UIViewController nextVC = GetViewControllerForViewModel(nextVM); return(nextVC); }; GetPreviousViewController = delegate(UIPageViewController pc, UIViewController rc) { IMvxTvosView rcTV = rc as IMvxTvosView; if (rcTV == null) { return(null); } IMvxPagedViewModel currentVM = rcTV.ViewModel as IMvxPagedViewModel; if (currentVM == null) { return(null); } IMvxPagedViewModel prevVM = pageVM.GetPreviousViewModel(currentVM); if (prevVM == null) { return(null); } UIViewController prevVC = GetViewControllerForViewModel(prevVM); return(prevVC); }; }
public override void Show(IMvxTvosView view) { if (view is IMvxModalTvosView) { if (this._currentModalViewController != null) throw new MvxException("Only one modal view controller at a time supported"); var newNav = this.CreateModalNavigationController(); newNav.PushViewController(view as UIViewController, false); this._currentModalViewController = view as UIViewController; this.PresentModalViewController(newNav, true); return; } base.Show(view); }
public virtual void Show(IMvxTvosView view) { var viewController = view as UIViewController; if (viewController == null) { throw new MvxException("Passed in IMvxTvosView is not a UIViewController"); } if (this.MasterNavigationController == null) { this.ShowFirstView(viewController); } else { this.MasterNavigationController.PushViewController(viewController, true /*animated*/); } }
public override void Show(IMvxTvosView view) { if (view is IMvxModalTvosView) { if (this._currentModalViewController != null) { throw new MvxException("Only one modal view controller at a time supported"); } var newNav = this.CreateModalNavigationController(); newNav.PushViewController(view as UIViewController, false); this._currentModalViewController = view as UIViewController; this.PresentModalViewController(newNav, true); return; } base.Show(view); }
private static IMvxViewModel LoadViewModel(this IMvxTvosView tvOSView) { if (tvOSView.Request == null) { tvOSView.Request = Mvx.IoCProvider.Resolve <IMvxCurrentRequest>().CurrentRequest; } var instanceRequest = tvOSView.Request as MvxViewModelInstanceRequest; if (instanceRequest != null) { return(instanceRequest.ViewModelInstance); } var loader = Mvx.IoCProvider.Resolve <IMvxViewModelLoader>(); var viewModel = loader.LoadViewModel(tvOSView.Request, null /* no saved state on tvOS currently */); if (viewModel == null) { throw new MvxException("ViewModel not loaded for " + tvOSView.Request.ViewModelType); } return(viewModel); }
public static void OnViewCreate(this IMvxTvosView tvOSView) { //var view = tvOSView as IMvxView<TViewModel>; tvOSView.OnViewCreate(tvOSView.LoadViewModel); }
public static ValueTask OnViewCreate(this IMvxTvosView tvOSView) { //var view = tvOSView as IMvxView<TViewModel>; return(tvOSView.OnViewCreate(tvOSView.LoadViewModel)); }