protected void CloseSplitViewController() { if (SplitViewController == null) { return; } foreach (var item in (SplitViewController as UISplitViewController).ViewControllers) { item.DidMoveToParentViewController(null); } SplitViewController = null; }
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); }
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(); }
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; }
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)); }
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(); }
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); }