示例#1
0
        public override void Show(IMvxIosView view)
        {
            if (view is IMvxModalIosView)
            {
                PresentModalViewController(view as UIViewController, true);
                return;
            }

            var viewController = view as UIViewController;

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

            if (RootViewController == null)
            {
                InitRootViewController();
            }

            var viewPresentationAttribute = GetViewPresentationAttribute(view);

            //Create fall back viewPresentationAttribute, when nothing is set
            if (viewPresentationAttribute == null)
            {
                ParentRootViewController.PushViewController(viewController, ParentRootViewController.ViewControllers.Count() > 1);
                return;
            }

            switch (viewPresentationAttribute.HintType)
            {
            case MvxPanelHintType.PopToRoot:
                ChangePresentation(new MvxSidebarPopToRootPresentationHint(viewPresentationAttribute.Panel, RootViewController, viewController));
                break;

            case MvxPanelHintType.ResetRoot:
                ChangePresentation(new MvxSidebarResetRootPresentationHint(viewPresentationAttribute.Panel, RootViewController, viewController));
                break;

            case MvxPanelHintType.ActivePanel:
            default:
                ChangePresentation(new MvxSidebarActivePanelPresentationHint(viewPresentationAttribute.Panel, RootViewController, viewController));
                break;
            }

            if (!viewPresentationAttribute.ShowPanel)
            {
                var menu = Mvx.Resolve <IMvxSideMenu>();
                menu?.Close();
            }
        }
示例#2
0
 public override void Close(IMvxViewModel toClose)
 {
     if (ParentRootViewController.ViewControllers.Count() > 1)
     {
         ParentRootViewController.PopViewController(true);
     }
     else if (RootViewController.NavigationController.ViewControllers.Count() > 1)
     {
         RootViewController.NavigationController.PopViewController(true);
     }
     else
     {
         base.Close(toClose);
     }
 }