Ejemplo n.º 1
0
        public static NSViewController ToViewController(this View view, bool allowNav = true)
        {
            var handler = view.GetOrCreateViewHandler();

            var vc = new CometViewController
            {
                CurrentView = view,
            };

            if (view.BuiltView is NavigationView nav && allowNav)
            {
                var navController = new NSNavigationController();
                nav.PerformNavigate = (toView) => {
                    //Since iOS doesn't allow nested navigations, pass the navigate along
                    if (toView is NavigationView newNav)
                    {
                        newNav.PerformNavigate = nav.PerformNavigate;
                    }
                    navController.PushViewController(toView.ToViewController(false), true);
                };
                navController.PushViewController(vc, false);
                return(navController);
            }
            return(vc);
        }
Ejemplo n.º 2
0
        void SetViewControllerActions(CometViewController vc)
        {
            var view       = vc.CurrentView;
            var leftAction = view?.GetEnvironment <Tuple <string, Action> >(CometExtensions.LeftActionButtonKey)
                             ?? view?.BuiltView?.GetEnvironment <Tuple <string, Action> >(CometExtensions.LeftActionButtonKey);
            var rightAction = view?.GetEnvironment <Tuple <string, Action> >(CometExtensions.RightActionButtonKey)
                              ?? view?.BuiltView?.GetEnvironment <Tuple <string, Action> >(CometExtensions.RightActionButtonKey);

            vc.NavigationItem.LeftBarButtonItem = leftAction == null ? null : new UIBarButtonItem(leftAction.Item1, UIBarButtonItemStyle.Plain, (s, e) =>
            {
                leftAction.Item2?.Invoke();
            });

            vc.NavigationItem.RightBarButtonItem = rightAction == null ? null : new UIBarButtonItem(rightAction.Item1, UIBarButtonItemStyle.Plain, (s, e) =>
            {
                rightAction.Item2?.Invoke();
            });
        }