一些 UIViewControllers 中的 XAMARIN.IOS UITabBarController [英] XAMARIN.IOS UITabBarController in some UIViewControllers

查看:13
本文介绍了一些 UIViewControllers 中的 XAMARIN.IOS UITabBarController的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用程序 (Xamarin.IOS),它以没有 TabBar 的 UIViewController(连接视图)开头.但是当用户登录时,我想将我创建的标签栏添加到其他视图中.反之亦然,当用户注销时,我想显示没有 TabBar 的连接视图.

我知道当我想显示 TabBar 时,在 appDelegate 中,我必须像这样初始化 _window:

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

如果我想要一个没有 TabBar 的视图,这里是 appDelegate:

viewController = new ConnectionViewController();_window.RootViewController = new UINavigationController(viewController);_window.MakeKeyAndVisible();

使用这个 TabController :

公共类 TabController : UITabBarController{UIViewController tab1, tab2, tab3, tab4;公共标签控制器(){tab1 = new UINavigationController(new ListViewController());tab1.Title = Texts.Home;tab1.TabBarItem.Image = UIImage.FromFile("Icons/Home@2x.png");tab2 = 新 UINavigationController(新 OViewController(1));tab2.Title = Texts.Categories;tab2.TabBarItem.Image = UIImage.FromFile("Icons/Tag@2x.png");tab3 = new UINavigationController(new SearchViewController());tab3.Title = 文本搜索;tab3.TabBarItem.Image = UIImage.FromFile("Icons/Search@2x.png");tab4 = new UINavigationController(new BookmarkViewController(1));tab4.Title = Texts.Bookmarks;tab4.TabBarItem.Image = UIImage.FromFile("Icons/Favorite@2x.png");var 选项卡 = 新 UIViewController[] {选项卡1、选项卡2、选项卡3、选项卡4};this.TabBar.BackgroundColor = UIColor.White;视图控制器 = 选项卡;}}

但是如何从带有 TabBar 的视图移动到不带 TabBar 的视图,反之亦然?

我不使用 StoryBoard,而是在 Xamarin.iOS 上编写代码.

解决方案

制表符 -> 无制表符

  1. 推送时

    ViewController2 vc2 = new ViewController2();vc2.HidesBottomBarWhenPushed = true;//添加这一行this.NavigationController.PushViewController(vc2, true);

  2. 在场时

    this.PresentViewController(new ViewController2(), true, null);

<块引用>

无标签 -> 标签

先将Connection Page设置为RootViewController,然后根据需要修改.

代码:

公共部分类 AppDelegate : UIApplicationDelegate{UIWindow 窗口;public override bool FinishedLaunching (UIApplication app, NSDictionary options){窗口 = 新的 UIWindow (UIScreen.MainScreen.Bounds);window.RootViewController = new UINavigationController(new ViewController1());window.MakeKeyAndVisible();返回真;}公共无效changeRootVC(){window.RootViewController = new TabController();}}

并在Connection Page中更改

如果(已连接){AppDelegate app = UIApplication.SharedApplication.Delegate as AppDelegate;app.changeRootVC();}

I have an application (Xamarin.IOS) which start with a UIViewController (Connection view) with no TabBar. But when user Logged, I'd like to add the tabbar that I've created to other views. And vis-versa, when user logged out, I'd like to display the connection view without TabBar.

I know that when I want to display the TabBar, in appDelegate, I have to initialize _window like this :

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

and if I want to have a view without TabBar, here is appDelegate:

viewController = new ConnectionViewController();
_window.RootViewController = new UINavigationController(viewController);
_window.MakeKeyAndVisible();

with this TabController :

public class TabController : UITabBarController
    {

        UIViewController tab1, tab2, tab3, tab4;

        public TabController()
        {
            tab1 = new UINavigationController(new ListViewController());
            tab1.Title = Texts.Home;
            tab1.TabBarItem.Image = UIImage.FromFile("Icons/Home@2x.png");

            tab2 = new UINavigationController(new OViewController(1));
            tab2.Title = Texts.Categories;
            tab2.TabBarItem.Image = UIImage.FromFile("Icons/Tag@2x.png");

            tab3 = new UINavigationController(new SearchViewController());
            tab3.Title = Texts.Search;
            tab3.TabBarItem.Image = UIImage.FromFile("Icons/Search@2x.png");

            tab4 = new UINavigationController(new BookmarkViewController(1));
            tab4.Title = Texts.Bookmarks;
            tab4.TabBarItem.Image = UIImage.FromFile("Icons/Favorite@2x.png");


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

            this.TabBar.BackgroundColor = UIColor.White;

            ViewControllers = tabs;
        }
    }

But how can I move from a view with TabBar to a view without and vis-versa ?

I don't use StoryBoard and I code on Xamarin.iOS.

解决方案

Tab -> No Tab

  1. When Push

    ViewController2 vc2 = new ViewController2();
    vc2.HidesBottomBarWhenPushed = true; //add this line
    this.NavigationController.PushViewController(vc2, true);
    

  2. When Present

    this.PresentViewController(new ViewController2(), true, null);
    

No Tab -> Tab

Set Connection Page as RootViewController at first, and then change it when you want to.

Code:

public partial class AppDelegate : UIApplicationDelegate
{
    UIWindow window;

    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        window = new UIWindow (UIScreen.MainScreen.Bounds);

        window.RootViewController = new UINavigationController(new ViewController1());
        window.MakeKeyAndVisible();
        return true;
    }

    public void changeRootVC()
    {
        window.RootViewController = new TabController();
    }
}

And change it in Connection Page

if(connected){
     AppDelegate app = UIApplication.SharedApplication.Delegate as AppDelegate;
     app.changeRootVC();
}

这篇关于一些 UIViewControllers 中的 XAMARIN.IOS UITabBarController的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆