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

时间:2013-03-06 15:04:47

标签: iphone xamarin.ios uitabbar

我想将一个标签栏添加到uiviewcontroller中,如下图所示:

enter image description here

顶部(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的按钮时,我得到异常和app force close。

1 个答案:

答案 0 :(得分:1)

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

  1. 在你的“地方应该改变...”中,只需设置一个简单的UIView,我们将把它称为容器。

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

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

    编辑:

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

    我在一个示例项目中试过这个并且它可以正常工作