мой код работает под ios, но под macos лист будет повторять «показать закрыть» l oop auto. когда я нажимаю кнопку редактирования, лист отображается в верхней части окна, затем я нажимаю кнопку закрытия на листе, лист исчез, но появляется снова немедленно, и закрываю auto, apear auto, код основного представления цикла:
struct NewWordsView: View {
@Environment(\.managedObjectContext) var context
@FetchRequest(entity: WordFrequency.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \WordFrequency.bookName, ascending: true)])
var words:FetchedResults<WordFrequency>
@State var showDetail:Bool = false
@State var wordIndex:Int = 0
var body: some View {
List{
ForEach(self.words.indices, id:\.self){ idx in
HStack{
Button(action: {self.deleteWords(idx:idx)}){
Text("X")
}
Button(action:{
self.showDetail.toggle()
self.wordIndex = idx
}){
Text("edit")
}
Text(self.words[idx].word!)
.font(.title)
}
}
.sheet(isPresented: self.$showDetail){
EditWordView( showDetail: self.$showDetail,word: self.words[self.wordIndex])
}
}
}
код подпредставления:
import SwiftUI
struct EditWordView: View {
@Environment(\.managedObjectContext) var context
@Binding var showDetail:Bool
let word:WordFrequency
@State var chinese:String = ""
var body: some View {
VStack{
Button(action:{
self.showDetail.toggle()
}){
Text("close")
}
Text("\(word.word ?? "")")
.font(.title)
TextField("中文解释", text: self.$chinese)
.font(.title)
}
}
}