SwiftUI疑难杂症(1):sheet content多次执行

在开发SwiftUIDev的时候,今天突然发现了一个弹出sheet时候content多次执行,手动dismiss也会多次执行的异常情况,能复现问题的代码如下:

Swift 复制代码
struct Test: View {
    @State private var present = false

    var body: some View {
        return VStack {
            Button("open") {
                present = true
            }
        }
        .toolbar {
            ToolbarItem {
//                Button("open") {
//                    present = true
//                }
                Menu {
                    Button("sample", action: {
                        present = true
                    })
                } label: {
                    Image(systemName: "curlybraces")
                }
            }
        }
        .sheet(isPresented: $present) {
            print("=====show sheet")
            return Text("sheet")
        }
        .navigationTitle("test")
    }
}

经测试,发现该问题仅在.toolbar { ToolbarItem { Menu {}}}.sheet结构的时候才会发生。如果把Menu换成Button,或者把.sheet移到.toolbar之前都不会发生这个问题。环境iOS16+Xcode14。

相关推荐
Zender Han9 小时前
Flutter Bloc / Cubit 最新详解与实战指南(2026版)
android·flutter·ios
tangweiguo0305198713 小时前
iOS vs Android 开发对照手册
android·ios
weixin_4434785113 小时前
flutter组件学习之Cupertino 组件(iOS风格)
学习·flutter·ios
Andy_GF1 天前
iOS26 系统适配-直接隐藏 UIBarButtonItem 的 Liquid glass 效果
ios
wjm0410061 天前
ios学习路线-- swift基础2
学习·ios·swift
开心就好20251 天前
全面解析WhatsApp Web抓包:原理、工具与安全
后端·ios
程序喵大人1 天前
OpenClaw的成功是AI Agent的“iPhone时刻”吗?
人工智能·ios·iphone·openclaw
marteker1 天前
苹果的冰球营销:用iPad设计面具,讲述科技之外的情感故事
科技·ios·ipad
H_老邪2 天前
贪心算法的应用
算法·ios·贪心算法
UXbot2 天前
APP原型生成工具测评
android·前端·人工智能·低代码·ios·开发·app原型