UITabBarController ohne UITabBar

From macwrench
Jump to navigation Jump to search

Manchmal möchte man die Technik eines UITabBarController verwenden, ohne jedoch eine sichtbare UITabBar zu haben - beispielsweise weil man eine andere Navigation verwenden möchte.

Dazu genügt es, folgendes Protokoll für die Klasse UITabBarController zu definieren, beispielsweise im Application Delegate. Dadurch wird die Tabbar ausgeblendet und der für sie reservierte Platz von den View Controllern genutzt.

@implementation UITabBarController(HiddenTabBarAddition)

- (void)viewWillAppear:(BOOL)animated {
	[super viewWillAppear:animated];
	BOOL hide = YES;
	if ([self.view.subviews count] < 2) {
		return;
	}
	UIView *contentView;
	if ([[self.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]) {
		contentView = [self.view.subviews objectAtIndex:1];
	} else {
		contentView = [self.view.subviews objectAtIndex:0];
	}
	if (hide) {
		contentView.frame = self.view.bounds;		
	} else {
		contentView.frame = CGRectMake(self.view.bounds.origin.x,
					       self.view.bounds.origin.y,
					       self.view.bounds.size.width,
					       self.view.bounds.size.height - self.tabBar.frame.size.height);
	}
	self.tabBar.hidden = hide;
}

@end

Siehe auch