Добавление UITabBarController и отсутствие NavigationController

Поскольку я новичок в Xamarin.IOS, я хотел бы задать вопрос. Я следовал этому примеру для добавление UITabBarController в проект Xamarin.IOS.

Когда я инициализировал RootViewController экземпляром TabController, он отлично работает, и у меня есть все вкладки. НО мой NavigationController установил значение null! это означает, что :

  1. NavigationItem исчезнет
  2. навигация между viewControllers невозможна с помощью этого кода:

    this.NavigationController.PushViewController(new ProfileViewController(), true);
    

потому что NavigationController равен нулю! Вот мой код в AppDelegate:

_tabController = new TabController();
_window.RootViewController = _tabController;

и мой TabController:

public class TabController : UITabBarController
    {

        UIViewController tab1, tab2, tab3, tab4;

        public TabController()
        {
            tab1 = new HomeViewController();
            tab1.TabBarItem.Image = UIImage.FromFile("Icons/Home.png");

            tab2 = new TagCategoryViewController(null, null, 1, null);
            tab2.TabBarItem.Image = UIImage.FromFile("Icons/Tag.png");

            tab3 = new SearchViewController();
            tab3.TabBarItem.Image = UIImage.FromFile("Icons/Search.png");

            tab4 = new ProfileViewController();
            tab4.TabBarItem.Image = UIImage.FromFile("Icons/Home.png");

            var tabs = new UIViewController[] {
                tab1, tab2, tab3,tab4
            };

            ViewControllers = tabs;
        }
    }

Кроме того, у меня много UIViewController, и я делаю их все программно и не использую StoryBoard!




Ответы (1)


Обернув TabController в UINavigationController.

_tabController = new TabController();
_window.RootViewController = new UINavigationController(_tabController);

Таким образом, свойство NavigationController не будет нулевым, и можно будет выполнять навигацию.

person Mark Verkiel    schedule 07.11.2017
comment
небольшой вопрос: когда я перехожу к UIViewController, которого нет в списке TabController, панель вкладок исчезает! Ты знаешь почему? - person Alireza; 07.11.2017
comment
UINavigationController работает с навигацией по стеку. Каждый ViewController, помещенный в стек, будет отображаться над TabController. Это означает, что TabController исчезнет при переходе к новому ViewController и будет отображаться при нажатии кнопки «Назад». - person Mark Verkiel; 07.11.2017
comment
Итак, давайте представим, что у меня есть ViewController1 с TabController, и я хочу перейти к ViewController2 (которого нет в TabController), сохранив TabController. Как мне это сделать? это с PushViewController? - person Alireza; 07.11.2017
comment
Вместо обновления вопроса лучше задать новый вопрос. - person Mark Verkiel; 08.11.2017
comment
Хорошо, вот мой новый вопрос: stackoverflow.com/questions/47175839/ - person Alireza; 08.11.2017