在Xamarin Studio中隐藏/删除子视图

本文关键字:删除 视图 隐藏 Xamarin Studio | 更新日期: 2023-09-27 18:25:09

我通过AddChildViewController方法向视图添加了一个UITabBarController。然后我导航到下一个视图,我的选项卡栏出现了,嘿,presto。但是,由于我现在处于一个新视图中,我如何删除子视图的UITabBarController,因为当我使用RemoveFromSuperview函数时,它只删除父视图,如果我推送另一个视图,栏仍然会出现。

添加子视图的视图:

tabController = new UITabBarController ();
tabController.ViewControllers = new UIViewController[] {
    vc1,
    vc2,
    vc3
};
tabController.ViewControllers [0].TabBarItem.Title = "vc1";
tabController.ViewControllers [1].TabBarItem.Title = "vc2";
tabController.ViewControllers [2].TabBarItem.Title = "vc3";
this.NavigationController.AddChildViewController(tabController);
this.NavigationController.Add(tabController.View);

非常感谢!

编辑-关于我的问题,请点击此处了解更多详细信息:http://forums.xamarin.com/discussion/6473/hide-tabbarcontroller-when-added-as-a-child-view#latest

在Xamarin Studio中隐藏/删除子视图

如果我理解正确,您希望您的初始ViewController是TabViewController,当用户在其中一个ViewController中选择某个内容时,它将转换为底部没有TabView按钮的ViewController。

如果是这样,以下是您需要做的。

在AppDelegate.cs中,您需要设置窗口/视图控制器,如下所示:

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
    window = new UIWindow (UIScreen.MainScreen.Bounds);
    rootController = new UINavigationController ();
    window.RootViewController = rootController;
    var tabController = new UITabBarController ();
    var vc1 = new TestController1();
    var vc2 = new TestController2();
    var vc3 = new TestController3();
    tabController.ViewControllers = new UIViewController[] {
        vc1,
        vc2,
        vc3
    };
    tabController.ViewControllers [0].TabBarItem.Title = "vc1";
    tabController.ViewControllers [1].TabBarItem.Title = "vc2";
    tabController.ViewControllers [2].TabBarItem.Title = "vc3";
    this.rootController.PushViewController(tabController, false);
    window.MakeKeyAndVisible ();
    return true;
}

一旦你有了这个设置,你就可以从TestController1:的类中转换到一个新的视图

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();
    var button = UIButton.FromType(UIButtonType.RoundedRect);
    button.Frame = new RectangleF (10, 10, 200, 30);
    button.SetTitle ("Go Child Controller", UIControlState.Normal);
    button.TouchUpInside += (object sender, EventArgs e) => {
        NavigationController.PushViewController(new TestController4(), true);
    };
    View.AddSubview (button);
 }

此外,您还可以简化选项卡按钮标题的设置。

而不是这样做:

tabController.ViewControllers [0].TabBarItem.Title = "vc1";

您可以从您的子UIViewController:中设置标题

public class TestController1:UIViewController
{
    public TestController1 ()
    {
        this.Title = "vc1";
    }
   ...