public override void Close(IMvxViewModel toClose) { if (_currentModalViewController != null) { var touchView = _currentModalViewController as IMvxTouchView; if (touchView == null) { MvxTrace.Trace(MvxTraceLevel.Error, "Unable to close view - modal is showing but not an IMvxTouchView"); return; } var viewModel = touchView.ReflectionGetViewModel(); if (viewModel != toClose) { MvxTrace.Trace(MvxTraceLevel.Error, "Unable to close view - modal is showing but is not the requested viewmodel"); return; } UINavigationController nav = _currentModalViewController.ParentViewController as UINavigationController; if (nav != null) { nav.DismissModalViewControllerAnimated(true); } else { _currentModalViewController.DismissModalViewControllerAnimated(true); } _currentModalViewController = null; return; } base.Close(toClose); }
public static void ReportError(UIViewController current, Exception e, string msg) { if (current == null) { throw new ArgumentNullException("current"); } var root = new RootElement(Locale.GetText("Error")) { new Section(Locale.GetText("Error")) { new StyledStringElement(msg) { Font = UIFont.BoldSystemFontOfSize(14), } } }; if (e != null) { root.Add(new Section(e.GetType().ToString()) { new StyledStringElement(e.Message) { Font = UIFont.SystemFontOfSize(14), } }); root.Add(new Section("Stacktrace") { new StyledStringElement(e.ToString()) { Font = UIFont.SystemFontOfSize(14), } }); } ; // Delay one second, as UIKit does not like to present // views in the middle of an animation. NSTimer.CreateScheduledTimer(TimeSpan.FromSeconds(1), delegate { UINavigationController nav = null; DialogViewController dvc = new DialogViewController(root); dvc.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(Locale.GetText("Close"), UIBarButtonItemStyle.Plain, delegate { nav.DismissModalViewControllerAnimated(false); }); nav = new UINavigationController(dvc); current.PresentModalViewController(nav, false); }); }
public override void CloseModalViewController() { if (_currentModalViewController != null) { UINavigationController nav = _currentModalViewController.ParentViewController as UINavigationController; if (nav != null) { nav.DismissModalViewControllerAnimated(true); } else { _currentModalViewController.DismissModalViewControllerAnimated(true); } _currentModalViewController = null; return; } base.CloseModalViewController(); }
private void ShowAboutView() { var captionLabel = UIHelper.CreateLabel( "about", true, 32, 32, UITextAlignment.Center, UIColor.Black ); captionLabel.Frame = new Rectangle(0, 10, 320, 40); UIView header = new UIView(new Rectangle(0, 0, 300, 40)); header.AddSubviews(captionLabel); var closeButton = new StyledStringElement("Close"); closeButton.BackgroundColor = UIColor.LightGray; closeButton.Alignment = UITextAlignment.Center; closeButton.Tapped += delegate { navigation.DismissModalViewControllerAnimated(true); }; var root = new RootElement("About") { new Section(header), new Section(UIHelper.CreateHtmlView("About.html", 290f, 300f)), new Section() { closeButton } }; root.UnevenRows = true; var dvc = new StyledDialogViewController(root, null, backgroundColor) { Autorotate = true, }; navigation.PresentModalViewController(dvc, true); }