我正在开发一款iOS应用程序,它有一个用于显示TabBar的UITabBarController。 在某些地方,我提出了一个隐藏tabBar的modalView全屏。
我想检测我的tabBar何时对用户可见。 当de tabBar可见时,有什么方法可以自动检查 吗?
我试过了:
但它真的不起作用,因为tabBar并没有真正隐藏。
if ([[[appdelegate tabBarController] tabBar] isHidden])
{
NSLog(@"tabBar IS HIDDEN");
}
else
{
NSLog(@"tabBar IS VISIBLE");
}
我在BaseViewController中编写这段代码,这是我的模态视图的超类和我项目的其他视图。
感谢。
答案 0 :(得分:7)
检查此[[[self tabBarController] tabBar] isHidden]
很好,但在一种情况下会失败。如果你在该视图中没有标签栏(根本没有),那么[self tabBarController]
会返回nil
所以调用isHidden将返回NO,这是事实,但你必须检测到其他情况。它不是隐藏的,但它不会退出,除了检查你应该添加[self tabBarController] != nil
。所以基本上:
if([self tabBarController] && ![[[self tabBarController] tabBar] isHidden]){
//is visible
} else {
//is not visible or do not exists so is not visible
}
答案 1 :(得分:4)
你可以试试这个
if ([[[self tabBarController] tabBar] isHidden]){
NSLog(@"tabBar IS HIDDEN");
}
else
{
NSLog(@"tabBar IS VISIBLE");
}
答案 2 :(得分:1)
回答 Swift 3/4 +
if
let tabBarController = self.tabBarController,
!tabBarController.tabBar.isHidden {
// tabBar is visible
} else {
// tabBar either is not visible or does not exist
}
答案 3 :(得分:1)
我在Swift中使用它:
tabBarController?.tabBar.isHidden ?? true
我用它来查找标签栏高度:
var tabBarHeight: CGFloat {
if tabBarController?.tabBar.isHidden ?? true { return 0 }
return tabBarController?.tabBar.bounds.size.height ?? 0
}
答案 4 :(得分:1)
似乎当您通过 TabBarController present modally
VC 时,tabBar.isHidden
属性仍然是 false
。因此,为此场景添加一些备份代码即可。
private func isTabBarVisible() -> Bool {
var isTabBarVisible = false
if let tabBarController = navigationController?.tabBarController, tabBarController.tabBar.isHidden {
isTabBarVisible = true
}
if let navigationController = navigationController, navigationController.hidesBottomBarWhenPushed {
isTabBarVisible = true
}
if isModal() {
isTabBarVisible = true
}
print("? tabBar visible: \(isTabBarVisible)")
return isTabBarVisible
}
private func isModal() -> Bool {
if presentingViewController != nil { return true }
if navigationController?.presentingViewController == navigationController { return true }
if (tabBarController?.presentingViewController as? UITabBarController) != nil { return true }
return false
}
我在这篇文章中找到了检查 VC 是否以模态呈现的方法:https://stackoverflow.com/a/23620377/7468486,所以我的回答基本上是两者的混合。
答案 5 :(得分:0)
这可能是最简单的方法:(假设您没有直接观看视图)
将被推送到navigationController的ViewController有一个属性hidesBottomBarWhenPushed。 只需检查视图控制器中是否为YES,您就知道tabbar是否被隐藏。
答案 6 :(得分:0)
您可以检查
<div>
{items.map((value, index) => {
return (<div className="note" key = {index}>{value.title}</div>);
})}
</div>
答案 7 :(得分:-1)
检查window
的{{1}}属性。 <{1}}当tabBar
不可见时,此属性设置为nil
。
UIView