0

全画面表示にしたい設定ダイアログがあり、画面の下部にあるタブバーを覆います。このSOの回答を使用してView Controllerに追加HidesBottomBarWhenPushedすると、タブバーが非表示になります。UITabBarController残念ながら、サブクラスによって表示される小さな三角形のインジケーター サブビューが残ります。

ここに画像の説明を入力

インジケーターを非表示にするために購読できる何らかの形式の通知があると思いますが、それが何であるかはわかりません。ここで少し助けますか?

4

2 に答える 2

1

ここで説明されている方法を使用してバーを非表示に設定すると、NSNotification を投稿できますか? ImageView から TabBarController にアクセスできません

于 2012-11-27T22:44:08.970 に答える
0

将来の参考のために記録する価値があると思うので、私はこれに自分で答えます。私は私SettingsDialogViewControllerViewDidLoad()方法で私を結びつけていHomeDialogViewControllerます:

NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Settings", UIBarButtonItemStyle.Plain, (e, sender) => {
    ActivateController (_settingsDvc());
});

SettingsDialogViewControllerで作成されHidesBottomBarWhenPushed = trueます。そのため、設定ダイアログがアクティブになると、下部のバーが非表示になり、のViewWillLayoutSubviews()メソッドCustomTabBarControllerが呼び出されます。SettingsDialogViewControllerそのメソッドをオーバーライドすることで、表示されているビュー コントローラー (例: ) が押されたときに下部のバーを非表示にするかどうかに基づいて、インジケーターの表示を設定できます。そのView Controllerがポップされると、インジケーターは自動的に再表示されます。

public override void ViewWillLayoutSubviews () {
    base.ViewWillLayoutSubviews ();
    var selectedVc = SelectedViewController as UINavigationController;
    indicator.Hidden = selectedVc != null && selectedVc.VisibleViewController.HidesBottomBarWhenPushed;
}

最後に、新しい設定ビューを有効にしたときに発生したアニメーションにより、画面のステータス バーの下に黒い帯が表示されることがわかりました。AutoResizingMask「from」View Controllerにを設定することでこれを解決しました。

public override void ViewDidLoad () {
    base.ViewDidLoad ();
    NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Settings", UIBarButtonItemStyle.Plain, (e, sender) => {
        ActivateController (_settingsDvc());
    });
    View.AutoresizingMask = UIViewAutoresizing.FlexibleHeight;
}
于 2012-11-28T17:24:33.163 に答える