簡體   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