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);
        }
Beispiel #2
0
        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*/);
        }
Beispiel #4
0
        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*/);
            }
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
 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));
 }