【问题标题】:ios/objective-c: Detect tabbarbutton pressed eventios/objective-c: 检测 tabbarbutton 按下事件
【发布时间】:2023-03-22 11:51:01
【问题描述】:

我想阻止用户转到通过标签栏按钮访问的某些视图控制器,而是要求他们使用警报登录。我可以禁用按钮,但是,检测禁用的标签栏按钮上的按钮按下(以触发警报)的唯一方法似乎是将按钮嵌入到另一个视图中,并带有一个看起来很复杂的手势识别器。

或者,如果我让按钮保持启用状态,按下它们会启动分配给它们的视图控制器,而无法启动警报。

有没有办法检测新闻并抢占视图控制器的 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
}

【问题讨论】:

    标签: ios uitabbarcontroller


    【解决方案1】:

    您必须在UITabBarController 中实现的方法是:

    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
    

    如果用户已登录,则返回“是”,如果未登录,则显示警报并返回“否”。您可以通过将 viewController 与您希望用户登录的项目进行比较来检查按下了哪个项目。

    您不必在订阅UITabBarController 委托协议的控制器中实现此方法,而是在您的UITabBarController 的子类中实现它。

    【讨论】:

      猜你喜欢
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      相关资源
      最近更新 更多