Xamarin.ios 添加UITabBarController并且没有NavigationController

Xamarin.ios 添加UITabBarController并且没有NavigationController,xamarin.ios,uitabbarcontroller,appdelegate,navigationcontroller,rootviewcontroller,Xamarin.ios,Uitabbarcontroller,Appdelegate,Navigationcontroller,Rootviewcontroller,由于我是Xamarin.IOS的新手,我想问一个问题。 我在Xamarin.IOS项目中添加了UITabBarController 当我通过TabController的实例初始化RootViewController时,它工作正常,我拥有所有选项卡。 但是我的导航控制器设置为空!这意味着: 导航项将消失 以下代码不允许在ViewController之间导航: this.NavigationController.PushViewController(new ProfileViewController

由于我是Xamarin.IOS的新手,我想问一个问题。 我在Xamarin.IOS项目中添加了UITabBarController

当我通过TabController的实例初始化RootViewController时,它工作正常,我拥有所有选项卡。 但是我的导航控制器设置为空!这意味着:

  • 导航项将消失
  • 以下代码不允许在ViewController之间导航:

    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,所有这些都是通过编程实现的,我不使用故事板

    选项卡controller
    包装在
    UINavigationController

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

    这样NavigationController属性就不会为null,可以进行导航。

    有一个小问题,当我导航到不在TabController列表中的UIViewController时,选项卡栏会消失!你知道为什么吗?
    UINavigationController
    用于堆栈导航。推到堆栈上的每个
    ViewController
    都将显示在
    选项卡controller
    上方。这意味着当按下新的
    ViewController
    时,
    TabController
    将消失,并在按下后退按钮时显示。让我们想象一下,我有了带有TabController的ViewController1,我想通过保持TabController来导航到ViewController2(它在TabController中不存在)。我怎么做?是否使用PushViewController?与其更新问题,不如提出新问题。好的,这是我的新问题: