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:检测自定义表格视图单元格中的按钮按下?

vue实现一个tabba组件r的封装

IOS/Objective-C:用于识别命名实体的 NSLinguisticTagger

IOS / Objective-C:测试图像是不是存在[重复]

IOS/Objective-C:从 NSManagedObject 构建 NSDictionary

iOS/Objective-C:有啥方法可以查看安排了哪些 localNotifications? [复制]