Checking this [[[self tabBarController] tabBar] isHidden] fine, but in one case it will fail. If you don't have a tab bar in this view (in general), then [self tabBarController] returns nil , so calling isHidden will return NO, which is true, but you should detect this situation in another case. It is not hidden, but it does not exit it, except that you must add [self tabBarController] != nil . So basically:
if([self tabBarController] && ![[[self tabBarController] tabBar] isHidden]){ //is visible } else { //is not visible or do not exists so is not visible }
source share