收藏
回答

skyline模式下 tabbar显示异常?

首次进入 是正常显示  进入 一个详情页面再进入 另一个tabbar 页面 就不见了  目前测试阶 iphone16上出现这个情况;
但是在首次加载后tabbar页面切换到另一个tabbar页面也是正常的;
意思是只要tabbar 页面没有被加载过 从其他非 tabbar也跳转过来tabbar栏都不会显示。(奇怪的是我登录后跳转的第一个tabbar页面又是正常显示的)



// import {svgplayer} from '../utils/svgaplayer'
import config from '../config'
var app = getApp()
Component({
  data: {
    tabShowStyle'',
    tabBarShowtrue,
    // 遮罩可见
    maskVisiblefalse,
    isShowfalse,
    selected0,
    color"rgba(206, 206, 206, 1)",
    selectedColor"rgba(255, 93, 102, 1)",
    list: [{
      pagePath"/pages/index/index",
      iconPath: config.fileURL + "new_xf/img/tabBar/home.png",
      selectedIconPath: config.fileURL + "new_xf/img/tabBar/home_active.png",
      text"首页",
      textKey:'index',
      className'tab-bar-item',
      hiddenfalse // 是否隐藏该 tab
    },
    {
      pagePath"/pages/house/house",
      iconPath: config.fileURL + "new_xf/img/tabBar/house.png",
      selectedIconPath: config.fileURL + "new_xf/img/tabBar/house_active.png",
      text"房源",
      className'tab-bar-item',
      info0,
      hiddenfalse,
      textKey'code1' // 用于标识使用哪个 globalData 变量更新文本
    },
    {
      pagePath"/pages/car/car",
      iconPath: config.fileURL + "new_xf/img/tabBar/car.png",
      selectedIconPath: config.fileURL + "new_xf/img/tabBar/car_active.png",
      text"车位",
      className'tab-bar-item',
      info0,
      hiddenfalse,
      textKey'code2' // 用于标识使用哪个 globalData 变量更新文本
    },  
    {
      pagePath"/pages/intention/intention",
      iconPath:  config.fileURL + "new_xf/img/tabBar/yxd.png",
      selectedIconPath:  config.fileURL + "new_xf/img/tabBar/yxd_active.png",
      text"意向单",
      className'tab-bar-item',
      hiddenfalse
      },
    ],
    loginShowfalse,
    joinShowfalse,
    baseImage: app.globalData.baseImage,
    // 添加图片预加载状态
    imagesLoadedfalse,
    tabData:{}
  },
  lifetimes: {
    async attached() {
  
    },
  },
  properties: {
    update:{
      type:Number,
      value:0
    }
  },
  observers:{
    updatefunction (to{
   
      this.updateTabTextFromGlobalData()
    }
  },
  methods: {



    switchTab(e) {
      if(this.data.maskVisible) return
      const data = e.currentTarget.dataset
      let path = data.path
      let CATE = 0;
      // 如果是对车位的跳转就判断一下
      if (path.includes('car')) {
          CATE = 2;
          path = app.observeCarType()
      }
      if (path.includes('house')) {
          CATE = 1;
          path = app.observeRoomType()
      }
      if(CATE !== 0) app.globalData.CATE = CATE;
      app.globalDialog.hide() //关闭全局弹窗
      let pages = getCurrentPages();
      let page = pages[pages.length - 1];
       // 避免因为是房源和车位都是平面图导致切换另一个平面图时不刷新问题
      if(page.data.pageId === "plane" && path === "/pages/plane/plane" && page.data.CATE !== CATE){
          page.doRenovateCATE()
      }else{
          wx.switchTab({ url: path })
      }
    
    },
    // 外部调用:显示全屏遮罩
    showMask() {
      if (!this.data.maskVisible) {
        this.setData({ maskVisibletrue })
      }
    },
    // 外部调用:隐藏全屏遮罩
    hideMask() {
      if (this.data.maskVisible) {
        this.setData({ maskVisiblefalse })
      }
    },
    // 遮罩点击(可按需关闭)
    onMaskTap() {
      this.hideMask()
    },
    
    // 从 globalData 更新 tab 文本(登录完成后调用)
    updateTabTextFromGlobalData() {
      const { code1, code2 ,settlementDocIds,projectInfo,tabData} = app.globalData
      const list = this.data.list.map(item => {
        const newItem = { ...item }
        // 如果设置了 textKey,则使用对应的 globalData 变量更新文本
        if (item.textKey === 'code1') {
          newItem.text = code1 ? code1 : newItem.text
          newItem.hidden = !( projectInfo.cate_room == 1)
        } else if (item.textKey === 'code2') {
          newItem.text = code2 ? code2 : newItem.text
          newItem.hidden = !(projectInfo.cate_car == 1)
        }
        return newItem
      })
      this.setData({ list,tabData })
    },
  


  }
})
<!--miniprogram/custom-tab-bar/index.wxml-->
<view class="tab-bar" style="{{tabShowStyle}}">
  <!-- 全局遮罩(放在自定义 tabbar 组件内,确保在同一原生层可覆盖 tabbar) -->
  <!-- <cover-view wx:if="{{maskVisible}}" class="global-mask" catchtap="onMaskTap"></cover-view> -->
  <!-- <image src="{{baseImage}}/images/tabs/navBg.png" class="navBg"></image> -->
  <!-- 透明层,占位 -->
  <view class="zw_box"></view>
  <view class="tabbar_content">
    <view wx:for="{{list}}" wx:key="index" wx:if="{{!item.hidden}}" class="tab-bar-item {{item.className + index}}" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
      <!-- 使用两个图片元素,通过opacity控制显示,避免重复加载 -->
      <image 
        src="{{item.iconPath}}" 
        class="cover_image {{selected === index ? 'hide' : 'show'}}"
        mode="aspectFit"
      ></image>
      <image 
        src="{{item.selectedIconPath}}" 
        class="select_cover_img {{selected === index ? 'show' : 'hide'}}"
        mode="aspectFit"
      ></image>
      <view wx:if="{{selected !== index}}" style="color: {{selected === index ? selectedColor : color}}" class="cover_view">{{item.text}}</view>
    </view>
  </view>
  
</view>


最后一次编辑于  01-22
回答关注问题邀请回答
收藏

2 个回答

  • 智能回答 智能回答 本次回答由AI生成
    01-22
    有用 1
    回复
  • 夏味
    夏味
    01-26

    需要自定义 tabbar,也就是自己实现一个,别用官方的 tabbar 组件就可以了

    01-26
    有用
    回复 1
    • forever
      forever
      01-26
      是的 最后就是这么做的
      01-26
      回复
登录 后发表内容