2013-08-13 15 views
6

私は、TabBarを表示するためのUITabBarControllerを持つiOSアプリケーションで作業しています。 ここでは、TabBarを非表示にするmodalViewのフルスクリーンを示します。iOSアプリケーションでtabBarが表示されていることを確認します。

私は自分のtabBarがユーザーに表示されていることを検出したいと考えています。 tabBarが表示されているかどうかを確認する方法はありますか?

私はそれを試してみました:

をしかし、タブバーが実際に隠されていないので、それは実際に動作しません。

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

このコードは、私のモーダルビューのスーパークラスであり、私のプロジェクトの他のビューであるBaseViewControllerに書きます。

ありがとうございました。

+0

I 'if [[[self tabBarController] tabBar] isHidden])'で試してみたところ、とてもうまくいっています。 – Bhavin

答えて

4

あなたはこの

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

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

[[[self tabBarController] tabBar] isHidden]は結構ですが、1つの場合には、それは失敗しますこれをチェックしてみてください。そのビューにタブバーがない場合、[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

tabBarwindowプロパティを確認してください。 UIViewが表示されていない場合、このプロパティはnilに設定されています。

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

これはおそらく最も簡単な方法です:

はnavigationControllerにプッシュされようとしているのViewControllerはhidesBottomBarWhenPushed性質を持っている(あなたが望むと直接プレイしていないと仮定した場合)。 ビューコントローラでYESであり、タブバーが非表示になっているかどうかを確認するだけです。

tabBarController?.tabBar.isHidden ?? true 

私はタブバーの高さを見つけるためにそれを使用します:私はスウィフトでこれを使用スウィフト3月4日+

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

回答

var tabBarHeight: CGFloat { 
    if tabBarController?.tabBar.isHidden ?? true { return 0 } 
    return tabBarController?.tabBar.bounds.size.height ?? 0 
} 
関連する問題