コード例 #1
0
        protected void CloseSplitViewController()
        {
            if (SplitViewController == null)
            {
                return;
            }

            foreach (var item in (SplitViewController as UISplitViewController).ViewControllers)
            {
                item.DidMoveToParentViewController(null);
            }
            SplitViewController = null;
        }
コード例 #2
0
        protected virtual void ShowRootViewController(
            UIViewController viewController,
            MvxRootPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            // check if viewController is a TabBarController
            if (viewController is IMvxTabBarViewController tabBarController)
            {
                TabBarViewController = tabBarController;
                SetWindowRootViewController(viewController);

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

                return;
            }

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

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

                return;
            }

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

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

                return;
            }

            // last scenario: display the plain viewController as root
            SetWindowRootViewController(viewController);
        }
コード例 #3
0
        protected virtual void ShowRootViewController(
            UIViewController viewController,
            MvxRootPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            // first set the new RootViewController
            if (attribute.WrapInNavigationController)
            {
                // viewController is initializing a navigation stack

                var navigationController = CreateNavigationController(viewController);
                MasterNavigationController = navigationController as MvxNavigationController;
                SetWindowRootViewController(navigationController);
            }
            else
            {
                // set plain ViewController as root

                SetWindowRootViewController(viewController);

                CloseMasterNavigationController();
            }

            // check if viewController is a TabBarController
            if (viewController is IMvxTabBarViewController tabBarController)
            {
                TabBarViewController = tabBarController;

                CloseSplitViewController();
            }
            // check if viewController is a SplitViewController
            else if (viewController is IMvxSplitViewController splitController)
            {
                SplitViewController = splitController;

                CloseTabBarViewController();
            }
            else
            {
                CloseTabBarViewController();
                CloseSplitViewController();
            }

            // always clean ModalViewControllers when setting a new root
            CleanupModalViewControllers();
        }
コード例 #4
0
        protected void CloseSplitViewController()
        {
            if (SplitViewController == null)
            {
                return;
            }

            if (SplitViewController is UISplitViewController splitController &&
                splitController.ViewControllers != null)
            {
                foreach (var item in splitController.ViewControllers)
                {
                    item.DidMoveToParentViewController(null);
                }
            }
            SplitViewController = null;
        }
コード例 #5
0
        protected virtual Task <bool> CloseSplitViewController()
        {
            if (SplitViewController == null)
            {
                return(Task.FromResult(true));
            }

            if (SplitViewController is UISplitViewController splitController &&
                splitController.ViewControllers != null)
            {
                foreach (var item in splitController.ViewControllers)
                {
                    item.DidMoveToParentViewController(null);
                }
            }
            SplitViewController = null;
            return(Task.FromResult(true));
        }
コード例 #6
0
        protected virtual void ShowRootViewController(
            UIViewController viewController,
            MvxRootPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            // check if viewController is a TabBarController
            if (viewController is IMvxTabBarViewController tabBarController)
            {
                TabBarViewController = tabBarController;

                // set root
                SetupWindowRootNavigation(viewController, attribute);

                CleanupModalViewControllers();
                CloseSplitViewController();

                return;
            }

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

                // set root
                SetupWindowRootNavigation(viewController, attribute);

                CleanupModalViewControllers();
                CloseTabBarViewController();

                return;
            }

            // set root initiating stack navigation or just a plain controller
            SetupWindowRootNavigation(viewController, attribute);

            CleanupModalViewControllers();
            CloseTabBarViewController();
            CloseSplitViewController();
        }
コード例 #7
0
        protected virtual async Task <bool> ShowRootViewController(
            UIViewController viewController,
            MvxRootPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            // check if viewController is a TabBarController
            if (viewController is IMvxTabBarViewController tabBarController)
            {
                TabBarViewController = tabBarController;

                // set root
                SetupWindowRootNavigation(viewController, attribute);

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

                return(true);
            }

            if (viewController is IMvxPageViewController pageViewController)
            {
                PageViewController = pageViewController;

                // set root
                SetupWindowRootNavigation(viewController, attribute);

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

                return(true);
            }

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

                // set root
                SetupWindowRootNavigation(viewController, attribute);

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

                return(true);
            }

            // set root initiating stack navigation or just a plain controller
            SetupWindowRootNavigation(viewController, attribute);

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