小编K E*_*E R的帖子

@Environment(\.dismiss) bug 导致弹出视图在 iOS 15 中加载自身的新版本

导航到 INCR: 3 并点击导航栏后退按钮或关闭按钮,您会注意到再次调用相同的视图,但这次是新版本,因为 和onAppear firstLoad = truerand不同的值。

如果您注释掉@Environment(\.dismiss) var dismissdismiss()一切都会像 iOS 14 中那样按预期工作。此问题也会发生在@Environment(\.presentationMode) var presentationMode

不确定这是一个错误还是我犯了一个愚蠢的错误,但这个问题给我的应用程序带来了很多问题,因为我必须能够以编程方式关闭视图,因此任何输入都会受到赞赏。

struct DetailView: View {
    
    @Environment(\.dismiss) var dismiss
    
    @State var isPresenting = false
    
    @State var incrInt = 0
    
    @State var firstLoad = true
    
    @State var rand = Int.random(in: 1..<500)
    
    var body: some View {
        
        Text("INCR: \(incrInt) RAND: \(rand)")
        
        Button("NAVIGATE"){
            isPresenting = true
        }
        Button("DISMISS"){
           dismiss()
        }
        
        .onAppear(perform: {
            
            if firstLoad{
                print("ON APPEAR FIRST LOAD")
                print(incrInt) …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui swiftui-navigationlink ios15

4
推荐指数
1
解决办法
1495
查看次数

标签 统计

ios ×1

ios15 ×1

swift ×1

swiftui ×1

swiftui-navigationlink ×1