xamarin.ios 中的 UITabBarController 不使用 StoryBoard

Posted

技术标签:

【中文标题】xamarin.ios 中的 UITabBarController 不使用 StoryBoard【英文标题】:UITabBarController in xamarin.ios without using StoryBoard 【发布时间】:2017-11-08 09:23:22 【问题描述】:

继续我在this post 中的问题,我想发布一个完整的问题,这将是许多 xamarin.ios 开发人员的问题。

我的要求是在所有 UIViewControllers 中都有 TabBar。所以,据我所知,有两种方法可以实现它。

第一:

appDelegate -> 设置 RootViewController : TabController -> UVC1

在这种情况下,我有 NULL NavigationController,我将没有 navigationItem。并在

this.NavigationController.PushViewController(新 SearchViewController(), true);

NavigationController 为空会出错。

这是我在 AppDelegate 中的代码:

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

还有我的 TabController :

公共类 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;
    

还有第二种方式:

RootViewController -> 导航控制器 -> TabController -> UVC1 -> 新的 UVC2 -> 没有标签栏!!

在这里,一切听起来都不错,但是当我导航到 Tabs 中不存在的新 UIViewController 时,TabBar 将消失!

代码是:

_tabController = new TabController();
var navigationController = new UINavigationController(viewController);
_window.RootViewController = new UINavigationController(_tabController);

我能做什么?任何的想法?

我不使用 StoryBoard !

【问题讨论】:

【参考方案1】:

通过用UINavigationController 包装所有UIViewController,您可以启用您想要的行为,但请确保删除TabBarController,因为NavigationBar 将与您的视图中的NavigationBar 重叠。

_window.RootViewController = _tabController;

还有你的看法:

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

【讨论】:

嘿伙计,非常感谢,你救了我的命;)最后一个问题,如何在 uiviewcontroller 上隐藏 tabBar? ***.com/questions/47182764/…

以上是关于xamarin.ios 中的 UITabBarController 不使用 StoryBoard的主要内容,如果未能解决你的问题,请参考以下文章

NSDictionary 到 Xamarin.iOS 中的 Json

C# Xamarin IOS:相当于 C# IOS Xamarin 中的 SystemClock.ElapsedRealtime()

如何加载存在于 Xamarin.iOS 中的共享库项目中的第二个 Storyboard

如何从 Xamarin.iOS 中的 iOS 扩展调用 NSUserDefaults Observer

Xamarin.iOS 中的文件选择器

如何解释 Xamarin.iOS 中的 NetworkReachabilityFlags?