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*/); } }
// 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); }
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*/); }