2013-08-13 2 views
6

TabBar를 표시하기위한 UITabBarController가있는 iOS 앱에서 작업하고 있습니다. 일부에서는, tabBar를 숨기는 modalView 전체 화면을 제시합니다.iOS 앱에서 tabBar가 표시되는지 확인

내 TabBar가 사용자에게 표시 될 때를 감지하고 싶습니다. tabBar가 표시되는지 여부를 확인할 수있는 방법은 입니다.? 한 tabBar 정말 숨겨져 있지 않기 때문에

하지만 정말 작동하지 않습니다

나는 것을 시도했다.

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

나는 내 모달 뷰와 내 프로젝트의 다른 뷰의 상위 클래스 인 BaseViewController이 코드를 작성합니다.

감사합니다.

+0

I :

tabBarController?.tabBar.isHidden ?? true 

내가 탭 표시 줄의 높이를 찾기 위해 사용 '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] 잘하지만 하나의 경우에 실패합니다이 확인 시도 할 수 있습니다. 해당보기 (전혀)에서 탭 표시 줄이 없다면 [self tabBarController]nil을 반환하므로 isHidden을 호출하면 NO가 반환되지만 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이고 탭바가 숨겨 졌는지 알 수 있습니다.

1

대답 스위프트 에서 3 +

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

/4 나는 스위프트이를 사용

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