Пример
Вот созданный мною минимальный воспроизводимый пример, демонстрирующий ту же проблему.
ContentView
Код: Выделить всё
import SwiftUI
struct ContentView: View {
@State private var term = ""
var body: some View {
VStack {
TextField("Enter a term", text: $term)
.padding()
ShowDictionaryButton(term: term)
}
}
}
Код: Выделить всё
import SwiftUI
struct ShowDictionaryButton: View {
let term: String
@State private var showingDictionary = false
var body: some View {
Button("Show dictionary") {
showingDictionary = true
}
.sheet(isPresented: $showingDictionary) {
DictionaryView(term: term)
.ignoresSafeArea()
}
}
}
Код: Выделить всё
import SwiftUI
struct DictionaryView: UIViewControllerRepresentable {
let term: String
typealias UIViewControllerType = UIReferenceLibraryViewController
func makeUIViewController(context: Context) -> UIReferenceLibraryViewController {
print("Making the DictionaryView")
return UIReferenceLibraryViewController(term: term)
}
func updateUIViewController(_ uiViewController: UIReferenceLibraryViewController, context: Context) {
print("Updating the DictionaryView")
}
}
Введите слово в текстовое поле и нажмите кнопку. Вы заметите, что иногда лист немедленно закрывается. Если этого не произошло, закройте лист вручную, затем попробуйте нажать кнопку несколько раз или измените слово и повторите попытку. Я так и не понял, когда это произойдет, кажется, это совершенно случайно. Чаще происходит при первой попытке, по крайней мере, на моем устройстве.
Подробнее здесь: https://stackoverflow.com/questions/793 ... in-swiftui
Мобильная версия