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);
        }
Exemple #2
0
        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();
        }
Exemple #4
0
        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);
        }