Запустить некоторый код при отклонении модального SwiftUI - PullRequest
0 голосов
/ 25 марта 2020

У меня есть модал, созданный с помощью SwitftUI, который имеет TextField с кодом onCommit:, который сохраняет пользовательский ввод из переменной @State в файл, когда пользователь нажимает «возврат» на клавиатуре.

Однако, если пользователь вводит что-то внутри TextField, а затем отклоняет модальный режим без нажатия клавиши «return», код onCommit: не срабатывает, а ввод пользователя остается несохраненным. Как мне запустить какой-то код, обращающийся к внутренней переменной моего модального просмотра, когда он уволен?

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Попробуйте сделать следующее:

Вместо того, чтобы иметь личную переменную @State на вашем модале, сделайте его внутренним @Binding, который вы передадите в модал с сайта вызова. Таким образом, измененная связанная переменная доступна как для вызывающей стороны, так и для модального представления.

1 голос
/ 25 марта 2020
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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...