d***@163.com
d***@163.com
  • 发布:2023-02-03 17:30
  • 更新:2023-06-27 16:49
  • 阅读:1532

【报Bug】uni.setTabBarItem设置visible参数,执行设置成功回调,但是实际未生效

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.4.6

手机系统: Android

手机系统版本号: Android 11

手机厂商: 小米

手机机型: 平板

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
```this.$nextTick(() => {  
                        let res = this.staffAppAuths.find(item => {  
                            return (item == 'Picking' || item == 'Order')  
                        })  

                        if (!res) {  
                            uni.setTabBarItem({  
                                index: 1, //从左到右 0开始  
                                visible: false, //默认true false隐藏  
                                success: function(res) {  
                                    uni.showToast({  
                                        title:'成功'  
                                    })  
                                }  
                            })  
                            uni.setTabBarItem({  
                                index: 2, //从左到右 0开始  
                                visible: false, //默认true false隐藏  
                                success: function(res) {  
                                    uni.showToast({  
                                        title:'成功'  
                                    })  
                                }  
                            })  
                        } else {  
                            uni.showModal({  
                                title: '有权限'  
                            })  
                            uni.setTabBarItem({  
                                index: 1, //从左到右 0开始  
                                visible: true //默认true false隐藏  
                            })  
                            uni.setTabBarItem({  
                                index: 2, //从左到右 0开始  
                                visible: true //默认true false隐藏  
                            })  
                        }  
                    })```

操作步骤:

在刚登陆成功,首页onShow()中调用uni.setTabBarItem设置visible参数,执行设置成功回调,但是实际未生效

预期结果:

在刚登陆成功,首页onShow()中调用uni.setTabBarItem设置visible参数,执行设置成功回调,并且生效

实际结果:

在刚登陆成功,首页onShow()中调用uni.setTabBarItem设置visible参数,执行设置成功回调,但是实际未生效

bug描述:

在刚登陆成功,首页onShow()中调用uni.setTabBarItem设置visible参数,执行设置成功回调,但是实际未生效

2023-02-03 17:30 负责人:无 分享
已邀请:
d***@163.com

d***@163.com (作者)

H5设置成功生效

d***@163.com

d***@163.com (作者)

ios系统平板正常实现

FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

加个 setTimeout,可能tabbar还没有初始化完成

有需要可以看
官方tabbar扩展、完全自定义、点击带动画效果、可设置字体粗细、隐藏图标或文本、图标或文本大小、选中和未选中的样式等等:https://ext.dcloud.net.cn/plugin?id=10343

  • d***@163.com (作者)

    谢谢,加个 setTimeout可以解决这个问题,但是会闪一下。

    2023-02-03 18:11

  • 1***@qq.com

    回复 d***@163.com: 我的加了setTimeout也不会隐藏

    2023-08-22 14:50

d***@163.com

d***@163.com (作者)

谢谢,加个 setTimeout可以解决这个问题,但是会闪一下(先显示全部TabBarItem,才开始隐藏)。
再次优化:onShow()里面uni.hideTabBar();然后


                            let res = this.staffAppAuths.find(item => {  
                                return (item == 'Picking' || item == 'Order')  
                            })  

                            if (!res) {  
                                uni.setTabBarItem({  
                                    index: 1, //从左到右 0开始  
                                    visible: false, //默认true false隐藏  
                                })  
                                uni.setTabBarItem({  
                                    index: 2, //从左到右 0开始  
                                    visible: false, //默认true false隐藏  
                                })  
                                uni.showTabBar();  
                            } else {  
                                uni.setTabBarItem({  
                                    index: 1, //从左到右 0开始  
                                    visible: true //默认true false隐藏  
                                })  
                                uni.setTabBarItem({  
                                    index: 2, //从左到右 0开始  
                                    visible: true //默认true false隐藏  
                                })  
                                uni.showTabBar();  
                            }  
                        })```  
这样直接跳出需要保留的TabBarItem。还是会闪,但是不存在(先显示全部TabBarItem,才开始隐藏)了
1***@qq.com

1***@qq.com -

APP项目中在App.vue里面的beforeMount周期中延迟10秒在ios还是没有效果
beforeMount: function() {
let platform = uni.getSystemInfoSync().platform;
if (platform == 'ios') {
setTimeout(function() {
uni.setTabBarItem({
index: 1,
visible: false
})
}, 20000)
} else {
uni.setTabBarItem({
index: 1,
visible: true
})
}
},

要回复问题请先登录注册