public override void Show(MvxViewModelRequest request) { var uiView = this.CreateViewControllerFor(request) as UIViewController; if (uiView == null) { throw new InvalidOperationException("Asking to show a view which is not a UIViewController!"); } if (uiView is IMvxModalIosView) { if (_currentModal != null) { throw new InvalidOperationException("Cannot have multiple modals"); } _currentModal = (IMvxModalIosView)uiView; var modalNavigationController = new UINavigationController(uiView); modalNavigationController.NavigationBar.Translucent = false; modalNavigationController.Toolbar.Translucent = false; uiView.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(Theme.CurrentTheme.CancelButton, UIBarButtonItemStyle.Plain, (s, e) => { var vm = ((IMvxModalIosView)uiView).ViewModel; Mvx.Resolve <MvvmCross.Plugins.Messenger.IMvxMessenger>().Publish(new CodeFramework.Core.Messages.CancelationMessage(vm)); modalNavigationController.DismissViewController(true, null); _currentModal = null; }); PresentModalViewController(modalNavigationController, true); } else if (uiView is StartupView) { Transition(uiView); } else if (uiView is LoginView && _slideoutController == null) { var nav = new UINavigationController(uiView); _window.RootViewController.PresentViewController(nav, true, null); } else if (uiView is MenuBaseViewController) { _slideoutController = new SlideoutNavigationController(); _slideoutController.MenuViewController = new MenuNavigationController(uiView, _slideoutController); uiView.NavigationController.NavigationBar.SetBackgroundImage(null, UIBarMetrics.Default); uiView.NavigationController.NavigationBar.Translucent = false; uiView.NavigationController.Toolbar.Translucent = false; uiView.NavigationController.NavigationBar.BarTintColor = UIColor.FromRGB(50, 50, 50); Transition(_slideoutController); } else { if (request.PresentationValues != null && request.PresentationValues.ContainsKey(PresentationValues.SlideoutRootPresentation)) { var mainNavigationController = new MainNavigationController(uiView, _slideoutController, new UIBarButtonItem(Theme.CurrentTheme.ThreeLinesButton, UIBarButtonItemStyle.Plain, (s, e) => _slideoutController.Open(true))); _generalNavigationController = mainNavigationController; _slideoutController.SetMainViewController(mainNavigationController, true); //_generalNavigationController.NavigationBar.BarTintColor = Theme.CurrentTheme.ApplicationNavigationBarTint; _generalNavigationController.NavigationBar.Translucent = false; _generalNavigationController.Toolbar.Translucent = false; } else { _generalNavigationController.PushViewController(uiView, true); } } }
public override void Show(MvxViewModelRequest request) { var uiView = this.CreateViewControllerFor(request) as UIViewController; if (uiView == null) throw new InvalidOperationException("Asking to show a view which is not a UIViewController!"); if (uiView is IMvxModalIosView) { if (_currentModal != null) throw new InvalidOperationException("Cannot have multiple modals"); _currentModal = (IMvxModalIosView)uiView; var modalNavigationController = new UINavigationController(uiView); modalNavigationController.NavigationBar.Translucent = false; modalNavigationController.Toolbar.Translucent = false; uiView.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(Theme.CurrentTheme.CancelButton, UIBarButtonItemStyle.Plain, (s, e) => { var vm = ((IMvxModalIosView)uiView).ViewModel; Mvx.Resolve<MvvmCross.Plugins.Messenger.IMvxMessenger>().Publish(new CodeFramework.Core.Messages.CancelationMessage(vm)); modalNavigationController.DismissViewController(true, null); _currentModal = null; }); PresentModalViewController(modalNavigationController, true); } else if (uiView is StartupView) { Transition(uiView); } else if (uiView is LoginView && _slideoutController == null) { var nav = new UINavigationController(uiView); _window.RootViewController.PresentViewController(nav, true, null); } else if (uiView is MenuBaseViewController) { _slideoutController = new SlideoutNavigationController(); _slideoutController.MenuViewController = new MenuNavigationController(uiView, _slideoutController); uiView.NavigationController.NavigationBar.SetBackgroundImage(null, UIBarMetrics.Default); uiView.NavigationController.NavigationBar.Translucent = false; uiView.NavigationController.Toolbar.Translucent = false; uiView.NavigationController.NavigationBar.BarTintColor = UIColor.FromRGB(50, 50, 50); Transition(_slideoutController); } else { if (request.PresentationValues != null && request.PresentationValues.ContainsKey(PresentationValues.SlideoutRootPresentation)) { var mainNavigationController = new MainNavigationController(uiView, _slideoutController, new UIBarButtonItem(Theme.CurrentTheme.ThreeLinesButton, UIBarButtonItemStyle.Plain, (s, e) => _slideoutController.Open(true))); _generalNavigationController = mainNavigationController; _slideoutController.SetMainViewController(mainNavigationController, true); //_generalNavigationController.NavigationBar.BarTintColor = Theme.CurrentTheme.ApplicationNavigationBarTint; _generalNavigationController.NavigationBar.Translucent = false; _generalNavigationController.Toolbar.Translucent = false; } else { _generalNavigationController.PushViewController(uiView, true); } } }