繁体   English   中英

关闭 SwiftUI 模式时触发一些代码

[英]Fire some code when dismissing SwiftUI modal

我有一个用 SwitftUI 构建的模式,它有一个带有onCommit:TextField onCommit:代码,当用户在键盘上点击“返回”时,该代码将用户输入从@State变量保存到文件中。

但是,如果用户在TextField键入内容,然后在不按“返回”的情况下关闭模式,则onCommit:代码不会触发并且用户输入保持未保存状态。 当我的模态视图被解除时,如何触发一些访问内部变量的代码?

请尝试以下操作:

取而代之的是在你的模态上有一个私有的 @State 变量,让它成为你从调用站点传递到模态的内部@Binding 这样修改后的绑定变量在调用者和模态视图上都可用。

import SwiftUI

struct ContentView: View {
    @State var dismiss = false
    @State var txt = ""
    @State var store = ""
    var body: some View {
        VStack {
        Text("modal").sheet(isPresented: $dismiss, onDismiss: {
            self.store = self.txt
        }) {
            TextField("txt", text: self.$txt) {
                self.store = self.txt
            }.padding().border(Color.red)
        }.onTapGesture {
            self.dismiss.toggle()
        }
            Text(store)
        }
    }
}

struct ContetView_Preview: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM