Sharkkkyu 2025-06-23 16:14 采纳率: 0%
浏览 6

objective-C实现tabbaritem点击切换状态但不跳转

做需求遇到了个卡点,求各位看下。
需求如下:
设置一个uitabbarcontroller,有3个tabbaritem。每个tabbar都有选中态的图片和文字颜色,但是第三个tab点击选中时,要求不跳转页面,但是按钮需要变成选中态的样式并且弹出浮窗。

我现在的实现方式是:在shouldSelectViewController中判断vc拦截第3个vc的跳转行为,并且根据选中状态,设置图片样式;比如:选中第3个tab时,将现在真实选中的tab的selectimage设置为未选中样式的图片,达到一个假切换的效果,但是现在的卡点是,字体是用appearance设置的,不能单独给tabbaritem设置字体,所以现在第3个tab的状态虽然是点击了,但是不是选中态,就导致他的字体不能变成选中的状态,求解答帮助

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-06-23 16:14
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你可以使用 UITabBarControllerselectedIndex 属性来实现点击 TabBar Item 不跳转的效果。

    首先,获取 UITabBarController 的引用,然后在 viewDidLoad 方法中设置 selectedIndex 属性:

    - (void)viewDidLoad {
        [super viewDidLoad];
        self.selectedIndex = 2; // 设置初始选中的 TabBar Item
    }
    

    然后,在 UITabBarControllertabBar: didSelectItem 方法中,判断是否是第三个 TabBar Item 被点击,如果是,则不跳转:

    - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
        if (item.tag == 2) { // 第三个 TabBar Item
            // 不跳转
            return;
        }
        // 跳转到对应的控制器
        UIViewController *viewController = [self.viewControllers objectAtIndex:item.tag];
        [self.navigationController pushViewController:viewController animated:YES];
    }
    

    在上面的代码中,我们使用 item.tag 来获取当前被点击的 TabBar Item 的索引,然后判断是否是第三个 TabBar Item,如果是,则不跳转。

    注意:在上面的代码中,我们假设 UITabBarControllerviewControllers 属性是一个数组,其中每个元素是一个 UIViewController 对象。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月23日