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。

相关推荐
秋雨梧桐叶落莳5 小时前
iOS——NSUserDefaults学习
学习·macos·ios·objective-c·cocoa
2601_955767427 小时前
iPhone 17 OLED 屏幕偏振光学分析 & AR 镀膜与双护技术实践解析
人工智能·科技·ios·iphone·圆偏振光
大熊猫侯佩8 小时前
WWDC26 前瞻:苹果可能放出的“王炸”,不只是 Siri
xcode·swift·wwdc
人月神话Lee10 小时前
【图像处理】颜色空间——RGB之外的世界
ios·ai编程·图像识别
用户0296697698210 小时前
微信iPad协议的消息加密与安全传输机制
ios
开开心心loky11 小时前
[OC 底层] (五) iOS 中常见的几种锁
macos·ios·cocoa
看谷秀16 小时前
swift part 6 三方库综合
swift
库奇噜啦呼17 小时前
【iOS】源码学习-SDWebImage源码学习
学习·ios
zuYM4g7Dp17 小时前
文顶顶iOS开发数据库篇—SQL
数据库·sql·ios
超梦dasgg18 小时前
APP 壳、加固、脱壳 完整通俗讲解(安卓为主,兼顾 iOS)
android·ios