uni-app 如何在titleNView中画一个选项卡

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 如何在titleNView中画一个选项卡

1 回复

uni-app 中,titleNView 是用于配置原生导航栏的组件。要在 titleNView 中画一个选项卡(Tab),通常需要结合自定义按钮和事件处理来实现。由于 titleNView 本身不支持直接绘制复杂的 UI 元素(如选项卡),我们通常会用按钮来模拟这一行为。

以下是一个示例代码,展示了如何在 titleNView 中添加自定义按钮,并通过点击事件来模拟选项卡切换:

// pages.json 中配置页面
{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "navigationBarTitleText": "",
        "navigationBarTextStyle": "white",
        "navigationBarBackgroundColor": "#007aff",
        "app-plus": {
          "titleNView": {
            "buttons": [
              {
                "text": "Tab1",
                "fontSrc": "/static/fonts/iconfont.ttf#icon-home", // 可选,自定义图标字体
                "fontSize": "18px",
                "color": "#ffffff",
                "float": "left",
                "onClick": "handleTabClick" // 点击事件处理函数
              },
              {
                "text": "Tab2",
                "color": "#ffffff",
                "float": "right",
                "onClick": "handleTabClick" // 点击事件处理函数
              }
            ]
          }
        }
      }
    }
  ]
}
// pages/index/index.vue 中处理点击事件
<template>
  <view>
    <!-- 页面内容 -->
    <view v-if="currentTab === 'Tab1'">这是Tab1的内容</view>
    <view v-else>这是Tab2的内容</view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      currentTab: 'Tab1' // 默认显示的Tab
    };
  },
  methods: {
    handleTabClick(e) {
      // e.index 是按钮的索引,e.target.dataset 是按钮的数据集
      // 这里我们通过按钮的 text 来判断是哪个Tab被点击
      if (e.target.textContent === 'Tab1') {
        this.currentTab = 'Tab1';
      } else if (e.target.textContent === 'Tab2') {
        this.currentTab = 'Tab2';
      }
    }
  }
};
</script>

在这个例子中,我们在 pages.json 中配置了 titleNView,并添加了两个按钮,每个按钮都有一个 onClick 事件处理器。在 pages/index/index.vue 中,我们根据点击的按钮文本更新 currentTab 的值,并通过条件渲染来显示不同的内容。

请注意,titleNView 的按钮配置是平台相关的,特别是在小程序和 App 中可能会有所不同。上述代码主要针对的是 App 平台。如果是在小程序平台,可能需要使用不同的方法来实现类似的功能。

回到顶部