1

AddChildViewController メソッドを使用して UITabBarController をビューに追加しました。次に、次のビューに移動すると、タブ バーが表示されます。ただし、新しいビューにいるので、子ビューの 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

4

1 に答える 1

0

私が正しく理解していれば、最初の ViewController を TabViewController にする必要があり、ユーザーが ViewControllers の 1 つで何かを選択すると、下部に 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";
    }

   ...
于 2013-07-28T12:49:48.283 に答える