예제 #1
0
        protected override void ShowRootViewController(UIViewController viewController, MvxRootPresentationAttribute attribute, MvxViewModelRequest request)
        {
            // check if viewController is a MvxSidebarPanelController
            if (viewController is MvxSidebarViewController sidebarView)
            {
                MasterNavigationController = new MvxNavigationController();

                SideBarViewController = sidebarView;
                SideBarViewController.SetNavigationController(MasterNavigationController);

                SetWindowRootViewController(viewController, attribute);

                Mvx.RegisterSingleton <IMvxSidebarViewController>(SideBarViewController);

                CloseModalViewControllers();
                CloseTabBarViewController();
                CloseSplitViewController();
                CloseMasterNavigationController();

                return;
            }
            else
            {
                SideBarViewController      = null;
                MasterNavigationController = null;

                base.ShowRootViewController(viewController, attribute, request);
            }
        }
예제 #2
0
        protected virtual void ShowModalViewController(
            UIViewController viewController,
            MvxModalPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            // if there is currently a modal ViewController, dismiss it forced (otherwise nothing happens when presenting)
            if (_window.RootViewController.PresentedViewController != null)
            {
                _window.RootViewController.DismissViewController(attribute.Animated, null);
            }

            // setup modal based on attribute
            if (attribute.WrapInNavigationController)
            {
                viewController            = new MvxNavigationController(viewController);
                ModalNavigationController = viewController as MvxNavigationController;
            }

            viewController.ModalPresentationStyle = attribute.ModalPresentationStyle;
            viewController.ModalTransitionStyle   = attribute.ModalTransitionStyle;

            _window.RootViewController.PresentViewController(
                viewController,
                attribute.Animated,
                null);
        }
예제 #3
0
        protected virtual void ShowTabViewController(
            UIViewController viewController,
            MvxTabPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            if (TabBarViewController == null)
            {
                throw new MvxException("Trying to show a tab without a TabBarViewController, this is not possible!");
            }

            string tabName     = attribute.TabName;
            string tabIconName = attribute.TabIconName;

            if (viewController is IMvxTabBarItemViewController tabBarItem)
            {
                tabName     = tabBarItem.TabName;
                tabIconName = tabBarItem.TabIconName;
            }

            if (attribute.WrapInNavigationController)
            {
                viewController = new MvxNavigationController(viewController);
            }

            TabBarViewController.ShowTabView(
                viewController,
                tabName,
                tabIconName,
                attribute.TabAccessibilityIdentifier);
        }
예제 #4
0
 protected override MvxNavigationController CreateNavigationController(UIViewController viewController)
 {
     _nav = base.CreateNavigationController(viewController);
     _nav.NavigationBarHidden        = false;
     _nav.NavigationBar.BarTintColor = CustomColor.JunctionXGreen;
     _nav.NavigationBar.TintColor    = UIColor.White;
     _nav.NavigationBar.Translucent  = false;
     return(_nav);
 }
예제 #5
0
파일: Presenter.cs 프로젝트: klzig/MapX
        protected override MvxNavigationController CreateNavigationController(UIViewController viewController)
        {
            // One NavigationController instance for all views
            NavigationController = base.CreateNavigationController(viewController);
            NavigationController.NavigationBarHidden        = false;
            NavigationController.NavigationBar.TintColor    = UIColor.FromRGB(15, 79, 140);
            NavigationController.NavigationBar.BarTintColor = UIColor.FromRGB(228, 242, 231);
            NavigationController.NavigationBar.Translucent  = false;

            NavigationController.NavigationBar.TopItem.SetLeftBarButtonItem(HamburgerItem.Button, false);

            return(NavigationController);
        }
예제 #6
0
        protected virtual void ShowRootViewController(
            UIViewController viewController,
            MvxRootPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            // check if viewController is a TabBarController
            if (viewController is IMvxTabBarViewController)
            {
                TabBarViewController = viewController as IMvxTabBarViewController;
                SetWindowRootViewController(viewController);

                CloseMasterNavigationController();
                CloseModalNavigationController();
                CloseSplitViewController();

                return;
            }

            // check if viewController is a SplitViewController
            if (viewController is IMvxSplitViewController)
            {
                SplitViewController = viewController as IMvxSplitViewController;
                SetWindowRootViewController(viewController);

                CloseMasterNavigationController();
                CloseModalNavigationController();
                CloseTabBarViewController();

                return;
            }

            // check if viewController is trying to initialize a navigation stack
            if (attribute.WrapInNavigationController)
            {
                viewController             = new MvxNavigationController(viewController);
                MasterNavigationController = viewController as MvxNavigationController;
                SetWindowRootViewController(viewController);

                CloseModalNavigationController();
                CloseTabBarViewController();
                CloseSplitViewController();

                return;
            }

            // last scenario: display the plain viewController as root
            SetWindowRootViewController(viewController);
        }
예제 #7
0
        protected override async Task <bool> ShowRootViewController(UIViewController viewController, MvxRootPresentationAttribute attribute, MvxViewModelRequest request)
        {
            // check if viewController is a MvxSidebarPanelController
            if (viewController is MvxSidebarViewController sidebarView)
            {
                MasterNavigationController = new MvxNavigationController();

                SideBarViewController = sidebarView;
                SideBarViewController.SetNavigationController(MasterNavigationController);

                SetWindowRootViewController(viewController, attribute);

                Mvx.IoCProvider.RegisterSingleton <IMvxSidebarViewController>(SideBarViewController);

                if (!await CloseModalViewControllers())
                {
                    return(false);
                }
                if (!await CloseTabBarViewController())
                {
                    return(false);
                }
                if (!await CloseSplitViewController())
                {
                    return(false);
                }
                CloseMasterNavigationController();

                return(true);
            }
            else
            {
                SideBarViewController      = null;
                MasterNavigationController = null;

                return(await base.ShowRootViewController(viewController, attribute, request));
            }
        }