You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何隐藏ToolbarItemGroup?零基础开发者求助

SwiftUI ToolbarItemGroup 切换显示实现方案

你可以通过状态变量+条件渲染的方式实现这个需求,因为SwiftUI的ToolbarItemGroup确实没有直接的可见性属性,但我们可以通过控制是否渲染该组来达到切换效果。

修改后的完整代码

import SwiftUI
 
struct ContentView: View {
    // 定义状态变量记录选中的菜单组,默认显示A组
    @State private var selectedGroup = "A"
    
    var body: some View {
      VStack {
        Text("Content")
        .toolbar {
            ToolbarItemGroup {
                Menu(content: {
                    // 给菜单选项添加点击事件,切换选中状态
                    Text("A")
                        .onTapGesture {
                            selectedGroup = "A"
                        }
                    Text("B")
                        .onTapGesture {
                            selectedGroup = "B"
                        }
                }, label:{ Text("Menu")})
            }
            
            // 根据选中状态决定是否显示A组工具
            if selectedGroup == "A" {
                ToolbarItemGroup {
                    Label("a", systemImage: "questionmark")
                    Label("aa", systemImage: "questionmark")
                }
            }
            
            // 根据选中状态决定是否显示B组工具
            if selectedGroup == "B" {
                ToolbarItemGroup {
                    Label("B", systemImage: "questionmark")
                    Label("BB", systemImage: "questionmark")
                }
            }
        }
    }
    .frame( height: 300 )
    .frame( width: 400 )
  }
}

#Preview {
    ContentView()
}

核心逻辑说明

  • @State private var selectedGroup = "A":用来存储用户当前选择的菜单组,@State是SwiftUI中管理视图内部状态的基本方式,它的变化会自动触发视图刷新。
  • 菜单选项的onTapGesture:点击"A"或"B"时更新selectedGroup的值,触发视图重新渲染。
  • 条件判断if selectedGroup == "A":只有当状态匹配时,对应的ToolbarItemGroup才会被渲染到界面上,实现切换显示的效果。

内容的提问来源于stack exchange,提问作者Keith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:17:42