Это можно сделать, используя UITabBarControllerDelegate
.
Реализуйте это, например. в вашем UIApplication
делегате и назначьте его вашему UITabBarController
.
Заголовок AppDelegate:
@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>
{
//[...]
}
//[...]
@end
Реализация AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//[...]
//instanciate and configure your tabbarcontroller
//[...]
//assign this instance as the delegate of our tabbarcontroller
tabBarController.delegate = self;
}
Следующий метод вызывается всякий раз, когда пользователь выбирает какую-либо вкладку. Возврат NO означает, что выбор фактически не должен происходить. Например, в этой ситуации вы можете отобразить предупреждение с просьбой сначала войти в систему.
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
//is the user logged in and did the user select any but the first tab?
if (!userLoggedIn &&
[tabBarController.viewControllers indexOfObject:viewController] != 0)
{ //nope->...
//force the user to the first tab
tabBarController.selectedIndex = 0;
//prevent the originally chosen tab selection
return NO;
}
//user is logged in, it is safe to select the chosen tab
return YES;
}