如何在tabBar上显示 提示小红点标记(badge)

本文介绍了一个UITabBarController的分类,用于在iOS应用的TabBar上显示或隐藏新消息提示的小红点,以增强用户体验。通过简单的方法调用即可实现标记点的展示与移除。

在应用开发中经常遇到在tabbar的某个控制器中界面会有新消息的提示,需要在该tabBar上显示标记点,以便让用户了解到你有新消息,提升用户体验。如QQ中动态提示

 

一 .首先创建个分类(类别)  UITabBarController+Badge

在该分类的.h文件给出三个方法:

- (void)showBadgeOnItemIndex:(int)index;//显示提示小红点标记

- (void)hideBadgeOnItemIndex:(int)index;//隐藏小红点标记

- (void)removeBadgeOnItemIndex:(int)index;//移除小红点标记

在分类的.m文件中实现这三个方法:

#define TabbarItemNums 4.0    //tabbar的数量

- (void)showBadgeOnItemIndex:(int)index{

    //移除之前的小红点

    [self removeBadgeOnItemIndex:index];

    

    //新建小红点

    UIView *badgeView = [[UIView alloc]init];

    badgeView.tag = 800 + index;

    badgeView.layer.cornerRadius = 5;

    badgeView.backgroundColor = [UIColor redColor];

    CGRect tabFram
### Vue3 中使用 uView Plus 组件库实现两个 `u-tabs` 联动效果 在 Vue3 和 uView Plus 的场景下,可以通过监听第一个 `u-tabs` 切换事件来控制第二个 `u-tabs` 的状态。具体来说,在第一个 `u-tabs` 发生切换时,可以触发回调函数并重置第二个 `u-tabs` 的当前索引至初始状态。 以下是完整的解决方案: #### 数据绑定与逻辑处理 通过定义响应式数据变量管理两个 `u-tabs` 的状态,并利用 Vue3 的组合式 API 或选项式 API 来完成联动逻辑[^1]。 ```javascript <template> <view> <!-- 第一个 u-tabs --> <u-tabs :list="firstList" :current="firstCurrent" @change="handleFirstChange"></u-tabs> <!-- 第二个 u-tabs --> <u-tabs v-if="secondList.length > 0" :list="secondList" :current="secondCurrent" @change="handleSecondChange"></u-tabs> </view> </template> <script> import { ref, reactive } from 'vue'; export default { setup() { const firstList = [ { name: '分类一' }, { name: '分类二' } ]; const secondListMap = new Map([ ['分类一', [{ name: '子项A' }, { name: '子项B' }]], ['分类二', [{ name: '子项C' }, { name: '子项D' }]] ]); const firstCurrent = ref(0); const secondCurrent = ref(0); const secondList = reactive([]); // 处理第一个 tab 切换 function handleFirstChange(index) { firstCurrent.value = index; const key = firstList[index].name; // 更新第二个列表的内容 secondList.splice(0, secondList.length); // 清空旧的数据 secondList.push(...secondListMap.get(key)); // 添加新的数据 // 将第二个 tab 重置到初始状态 secondCurrent.value = 0; } // 处理第二个 tab 切换 function handleSecondChange(index) { secondCurrent.value = index; } return { firstList, secondList, firstCurrent, secondCurrent, handleFirstChange, handleSecondChange }; } }; </script> ``` #### 关键点解析 1. **动态更新第二组 Tabs** 使用 `reactive` 数组存储第二个 `u-tabs` 的列表内容,并根据第一个 `u-tabs` 当前选中的标签名称动态调整其显示的子项[^2]。 2. **重置机制** 每次第一个 `u-tabs` 切换时,都会调用 `handleFirstChange` 方法,该方法不仅会更新第一个 `u-tabs` 的当前索引,还会清空并重新填充第二个 `u-tabs` 的列表内容,同时将其索引重置为 `0`。 3. **条件渲染优化** 如果第二个 `u-tabs` 的列表为空,则不进行渲染,避免不必要的 DOM 结构展示。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值