ios/objective-c: 检测 tabbarbutton 按下事件
Posted
技术标签:
【中文标题】ios/objective-c: 检测 tabbarbutton 按下事件【英文标题】:ios/objective-c: Detect tabbarbutton pressed event 【发布时间】:2017-01-13 18:30:00 【问题描述】:我想阻止用户转到通过标签栏按钮访问的某些视图控制器,而是要求他们使用警报登录。我可以禁用按钮,但是,检测禁用的标签栏按钮上的按钮按下(以触发警报)的唯一方法似乎是将按钮嵌入到另一个视图中,并带有一个看起来很复杂的手势识别器。
或者,如果我让按钮保持启用状态,按下它们会启动分配给它们的视图控制器,而无法启动警报。
有没有办法检测新闻并抢占视图控制器的 segue 以便我可以启动警报?
我尝试在我的应用程序委托和单个视图控制器(订阅 uitabbarcontroller 委托协议)的 viewdidload 中使用以下方法,但它没有被触发。
- (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
【问题讨论】:
【参考方案1】:您必须在UITabBarController
中实现的方法是:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
如果用户已登录,则返回“是”,如果未登录,则显示警报并返回“否”。您可以通过将 viewController 与您希望用户登录的项目进行比较来检查按下了哪个项目。
您不必在订阅UITabBarController
委托协议的控制器中实现此方法,而是在您的UITabBarController
的子类中实现它。
【讨论】:
以上是关于ios/objective-c: 检测 tabbarbutton 按下事件的主要内容,如果未能解决你的问题,请参考以下文章
IOS/Objective-C:检测自定义表格视图单元格中的按钮按下?
IOS/Objective-C:用于识别命名实体的 NSLinguisticTagger
IOS / Objective-C:测试图像是不是存在[重复]