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