в чем проблема с Swiftui Sheet под macos - PullRequest
0 голосов
/ 18 июня 2020

мой код работает под 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)

            }

    }
}

1 Ответ

0 голосов
/ 19 июня 2020

следующий код должен быть после представления списка, а не ForEach.

 .sheet(isPresented: self.$showDetail){
                EditWordView( showDetail: self.$showDetail,word: self.words[self.wordIndex])
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...