示例#1
0
        public virtual void Show(IMvxUnityView view)
        {
            var viewController = view as UIViewController;

            if (viewController == null)
            {
                throw new MvxException("Passed in IMvxUnityView is not a UIViewController");
            }

            int layerMask = 1 << viewController.gameObject.layer;

            if ((_uiCamera.cullingMask & layerMask) == 0)
            {
                // ignore if not visible by ui camera
                return;
            }

            if (MasterNavigationController == null)
            {
                ShowFirstView(viewController);
            }
            else
            {
                MasterNavigationController.PushViewController(viewController, true /*animated*/);
            }
        }
示例#2
0
//		private static IMvxBundle GetSavedStateFromBundle(Bundle bundle)
//        {
//            if (bundle == null)
//                return null;
//
//            IMvxSavedStateConverter converter;
//            if (!Mvx.TryResolve<IMvxSavedStateConverter>(out converter))
//            {
//                MvxTrace.Trace("No saved state converter available - this is OK if seen during start");
//                return null;
//            }
//            var savedState = converter.Read(bundle);
//            return savedState;
//        }

        private static IMvxViewModel LoadViewModel(this IMvxUnityView unityView, IMvxBundle savedState = null)
        {
#warning NullViewModel needed?
            // how to do N
            //if (typeof (TViewModel) == typeof (MvxNullViewModel))
            //    return new MvxNullViewModel() as TViewModel;

            if (unityView.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");
                unityView.Request = Mvx.Resolve <IMvxCurrentRequest>().CurrentRequest;
            }

            var instanceRequest = unityView.Request as MvxViewModelInstanceRequest;
            if (instanceRequest != null)
            {
                return(instanceRequest.ViewModelInstance);
            }

            var loader = Mvx.Resolve <IMvxViewModelLoader>();

            var viewModel = loader.LoadViewModel(unityView.Request, savedState);
            if (viewModel == null)
            {
                throw new MvxException("ViewModel not loaded for " + unityView.Request.ViewModelType);
            }
            return(viewModel);
        }
示例#3
0
        public static void OnViewCreate(this IMvxUnityView unityView)
        {
            //var view = touchView as IMvxView<TViewModel>;

            //var savedState = GetSavedStateFromBundle(bundle);

//			var savedState = new MvxBundle();

            unityView.OnViewCreate(() => { return(unityView.LoadViewModel(null)); });
        }
        public virtual void Show(IMvxUnityView view)
        {
            var viewController = view as UIViewController;
            if (viewController == null)
                throw new MvxException("Passed in IMvxUnityView is not a UIViewController");

            int layerMask = 1 << viewController.gameObject.layer;
            if ((_uiCamera.cullingMask & layerMask) == 0)
            {
                // ignore if not visible by ui camera
                return;
            }

            if (MasterNavigationController == null)
                ShowFirstView(viewController);
            else
                MasterNavigationController.PushViewController(viewController, true /*animated*/);
        }