我想阻止用户通过标签栏栏按钮访问某些视图控制器,而是要求他们使用警报登录。我可以禁用按钮,但是,在禁用的标签栏按钮上检测按钮的唯一方法(为了触发警报)似乎是将按钮嵌入另一个带有手势识别器的视图中,这似乎很复杂。
或者,如果我启用按钮,按下它们会启动分配给它们的视图控制器,无法启动警报。
有没有办法检测印刷机并抢占segue到视图控制器,以便我可以发出警报?
我已尝试在我的app委托和各个视图控制器的viewdidload中使用以下方法(订阅uitabbarcontroller委托协议),但它没有被触发。
- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController
{
NSUInteger indexOfTab = [theTabBarController.viewControllers indexOfObject:viewController];
NSLog(@"Tab index pressed = %lu", (unsigned long)indexOfTab);
//launch alert
//prevent segue to view controller
}
答案 0 :(得分:0)
您必须在UITabBarController
中实施的方法是:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
如果用户已登录,则返回YES,如果不是,则显示警报并返回NO。您可以通过比较viewController和您希望用户登录的那个来检查按下了哪个项目。
您不必在订阅UITabBarController
委托协议的控制器中实现此方法,但要在UITabBarController
的子类中实现它。