在部分uiviewcontroller,monotouch iphone中添加标签栏

Posted

技术标签:

【中文标题】在部分uiviewcontroller,monotouch iphone中添加标签栏【英文标题】:Adding Tab bar in part of uiviewcontroller, monotouch iphone 【发布时间】:2013-03-06 15:04:46 【问题描述】:

我想像这张图片一样向 uiviewcontroller 添加一个标签栏:

顶部(2labels 和 UIScrollView )是固定的,当用户更改标签栏项目时,只有底部会更改。 我将标签栏控制器从 xcode 中的对象添加到我的 uiviewcontroller,但我不知道如何创建标签栏控制器的视图,如何更改页面的一部分。

编辑: 我为此使用此代码:

        UIViewController viewController1, viewController2;
        if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone) 
            viewController1 = new FirstViewController ("FirstViewController_iPhone", null);
            viewController2 = new SecondViewController ("SecondViewController_iPhone", null);
         else 
            viewController1 = new FirstViewController ("FirstViewController_iPad", null);
            viewController2 = new SecondViewController ("SecondViewController_iPad", null);
        
        UITabBarController tabBarController= new UITabBarController ();
        tabBarController.ViewControllers = new UIViewController [] 
            viewController1,
            viewController2,
        ;

        UIView v= tabBarController .View ;
        v.Frame = new Rectangle (0,150,320,260);
        UITabBar tb= tabBarController .TabBar;
        tb.Frame = new RectangleF (0,410,320,50);
        this.View .AddSubview (v  );
        this .View .AddSubview (tb);

但它不起作用。标签栏视图填满了所有视图,当我单击 uitabbar 的按钮时,出现异常并强制关闭应用程序。

【问题讨论】:

【参考方案1】:

您可能不需要标签栏来重现此行为。

    在您的“地方应该改变...”中,只需设置一个普通的 UIView,我们将其称为容器。

    在视图控制器的 viewDidLoad 中,创建三个视图并将它们保存在内存中,我们称它们为 detailView、mapView、agentView。

然后,在底部,您只需添加 3 个 UIButton。在每个按钮按下操作 (TouchUpInside) 上,您将相关视图添加为容器子视图(即 agentButton.TouchUpInside += () => container.AddSubView(detailsView); * 不要忘记删除前一个。

编辑:

this.View .AddSubview (tabBarController.View);
tabBarController.View.Frame = new RectangleF(....);

我已经在一个示例项目中尝试过,它可以工作

【讨论】:

感谢您的回答。是的,有可能。但是通过这种方式,我们应该注意在按下和松开时更改图标的状态。当按钮数量超过 4 个时,还要创建一些自定义视图。几乎我们必须为我们的容器再次实现之前在 tabbar 中实现的所有功能。我认为我们最好也找到一种使用标签栏控制器的方法。 使用标签栏控制器会稍微复杂一些。但主要想法是添加一个 TabBarController 作为 UIViewController 的子控制器。然后设置它的视图框架以使其适合您的白色矩形。 (并添加 tabbarController.view 作为另一个 UIViewController 的子视图) 谢谢马克。我相信我们必须这样做。您是否有任何源代码或教程。真的,我是 monotouch iphone 的新手,这些材料对我有帮助:) 我不确定您是否需要添加 TabBar 本身。它不应该包含在 tabbarController.View 中吗? 我们可以对tabbarController.View做什么?虽然我改变了它的框架大小,但它填满了所有页面:-S

以上是关于在部分uiviewcontroller,monotouch iphone中添加标签栏的主要内容,如果未能解决你的问题,请参考以下文章

在部分uiviewcontroller,monotouch iphone中添加标签栏

单个 UIViewController 上的 2 个 UICollectionViews,具有不同数量的部分

在 UIViewController 中嵌入 UIContainerView 作为屏幕的一部分

如何将一个 UIViewController 作为屏幕的一部分

如何将 UIViewController 呈现为部分视图?

UIViewController 根视图中的 UITableView 显示