2013-07-28 59 views
1

我通過AddChildViewController方法將UITabBarController添加到視圖。然後導航到下一個視圖,我的標籤欄出現,嘿presto。因爲我現在在新視圖中,我怎樣才能刪除子視圖的UITabBarController,因爲當我使用RemoveFromSuperview函數時,它只會刪除父視圖,並且如果我推送另一個視圖,則條仍然出現。在Xamarin Studio中隱藏/刪除子視圖

查看其中添加子視圖:

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

回答

0

如果我理解正確的話,你希望你的初始視圖控制器是一個TabViewController並且當用戶選擇在ViewControllers的一個東西它轉變到一個視圖控制器在底部沒有TabView按鈕。

如果是這樣,這是你需要做的。

在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"; 
    } 

    ... 
+0

感謝回答,完成推法是在應用程序啓動時,我的標籤直到應用程序中的第三個屏幕纔會使用視圖(假設登錄,引腳代碼和帶有標籤視圖的摘要屏幕)。是否仍然可以從應用程序的第三個視圖中調用標籤視圖?我想要在用戶註銷時隱藏選項卡視圖控制器。謝謝 –