HidesBottomBarWhenPushed离开指标

时间:2012-11-27 22:14:05

标签: ios xamarin.ios ios6 monotouch.dialog

我有一个设置对话框,我希望全屏显示,并覆盖屏幕底部的标签栏。我使用this SO answer并将HidesBottomBarWhenPushed添加到我的视图控制器中,它确实隐藏了标签栏。不幸的是,它留下了UITabBarController子类显示的小三角指示器子视图。

enter image description here

我假设有一些形式的通知,我可以订阅以隐藏指标,但我不知道那是什么。这里有点帮助?​​

2 个答案:

答案 0 :(得分:1)

使用此处描述的方法将栏设置为隐藏时,也许您可​​以发布NSNotification? Can't access TabBarController from ImageView

答案 1 :(得分:0)

我将自己回答这个问题,因为我认为值得记录以供将来参考。我在SettingsDialogViewController ViewDidLoad()的{​​{1}}方法中接了一个HomeDialogViewController的电话:

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

使用SettingsDialogViewController创建HidesBottomBarWhenPushed = true。因此,当激活设置对话框时,底部栏会被隐藏,这会导致调用ViewWillLayoutSubviews()的{​​{1}}方法。通过覆盖该方法,我可以根据可见视图控制器(例如CustomTabBarController)是否在按下时隐藏底栏来设置指示器的可见性。当弹出该视图控制器时,指示器将自动重新出现。

SettingsDialogViewController

最后一点,我发现激活新设置视图时出现的动画会在状态栏下方的屏幕上显示黑带。我通过在“from”视图控制器中设置public override void ViewWillLayoutSubviews () { base.ViewWillLayoutSubviews (); var selectedVc = SelectedViewController as UINavigationController; indicator.Hidden = selectedVc != null && selectedVc.VisibleViewController.HidesBottomBarWhenPushed; } 来解决此问题。

AutoResizingMask