2013-08-13 32 views
6

Bir TabBar göstermek için UITabBarController içeren bir iOS Uygulaması üzerinde çalışıyorum. Bazı yerlerde tabBar'ı gizleyen bir modalView tam ekranı var.iOS uygulamasında tabBar görünürse kontrol edin

Kullanıcı için tabBar'ımın ne zaman görünür olduğunu belirlemek istiyorum. de tabBar görünür olduğunda ya da değilken otomatik olarak'u kontrol etmenin herhangi bir yolu var mı? TabBar gerçekten gizli değil çünkü

Ama gerçekten çalışmaz:

denedim.

if ([[[appdelegate tabBarController] tabBar] isHidden]) 
{ 
    NSLog(@"tabBar IS HIDDEN"); 
} 
else 
{ 
    NSLog(@"tabBar IS VISIBLE"); 
} 

benim kalıcı bir görünüm ve benim projenin diğer görüşlerin süper sınıf bir BaseViewController Bu kodu yazın.

Teşekkürler.

+0

I:

tabBarController?.tabBar.isHidden ?? true 

Ben sekme çubuğu yüksekliğini bulmak için kullanabilirsiniz ile denediyse ([[[tabSTarController] tabBar] isHidden]) 've çok iyi çalışıyor. – Bhavin

cevap

4

Bu

if ([[[self tabBarController] tabBar] isHidden]){ 

    NSLog(@"tabBar IS HIDDEN"); 
} 
else 
{ 
    NSLog(@"tabBar IS VISIBLE"); 
} 
7

[[[self tabBarController] tabBar] isHidden] iyi ama bir durumda, başarısız olacaktır Bunu işaretlemek deneyebilirsiniz. Bu görünümde (hiç) sekme çubuğunuz yoksa (0) [self tabBarController]nil döndürür, böylece hack isHidden gerçek olan NO döndürür, ancak bu durumu başka bir durum olarak algılamanız gerekir. Gizlenmez, ancak çıkmazsa, [self tabBarController] != nil eklemeniz gerekir. Yani temelde:

if([self tabBarController] && ![[[self tabBarController] tabBar] isHidden]){ 
    //is visible 
} else { 
    //is not visible or do not exists so is not visible 
} 
-1

Kontrol tabBar ait window özelliği. Bu özellik, UIView görünmüyorsa nil olarak ayarlanır.

if((BOOL)[[[self tabBarController] tabBar] window]) 
{ 
    // visible 
} 
else 
{ 
    // not visible 
} 
0

Bu muhtemelen en kolay yoludur:

NavigationController itilmiş olacak ViewController hidesBottomBarWhenPushed bir özelliğe sahip olmalıdır (manzaralı doğrudan oynamıyorlar varsayarak). Sadece denetleyicide YES olup olmadığını kontrol edin ve tabbarın gizli olup olmadığını kontrol edin.

1

Cevap Swift içinde 3 +

if 
    let tabBarController = self.tabBarController, 
    !tabBarController.tabBar.isHidden { 
    // tabBar is visible 
} else { 
    // tabBar either is not visible or does not exist 
} 
0

/4 Ben Swift bu kullanın:

var tabBarHeight: CGFloat { 
    if tabBarController?.tabBar.isHidden ?? true { return 0 } 
    return tabBarController?.tabBar.bounds.size.height ?? 0 
}