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。

相关推荐
鸽芷咕39 分钟前
【C++报错已解决】std::ios_base::floatfield
开发语言·c++·ios
浏览器爱好者4 小时前
如何在iPad上设置Chrome为默认浏览器
chrome·ios·ipad
mqiqe12 小时前
云计算Openstack Swift
云计算·openstack·swift
归辞...13 小时前
「iOS」——KVC
macos·ios·cocoa
阿里技术14 小时前
如何让 Android 的前端页面像 iOS 一样“优雅”?
android·前端·ios
蟹屋在海边14 小时前
iOS OC 底层原理之 category、load、initialize
ios
刘小哈哈哈14 小时前
iOS 使用使用渐变色生成图片
ios·cocoa·xcode
weixin_4089513515 小时前
android和ios双端应用性能的测试工具
android·ios·性能优化·性能测试·测试覆盖率·帧率·安卓性能测试
临海听风V15 小时前
iOS 中的 sqlite-shm 和 sqlite-wal 文件丢失
jvm·ios·sqlite