Элемент списка нельзя нажать, когда новый элемент coredata из листа в Swiftui - PullRequest
0 голосов
/ 15 марта 2020

Я сделал тест, список тегов (любой объект) из coredata. если я добавлю тег из этого представления (внизу), изображение (кружок) в элементе списка может быть нажато. Но когда я добавляю тег из листа (TestNewTagsView), я не могу нажать на изображение. Реальная позиция удара go около 20 очков. Затем я прокручиваю список, все в порядке.

это снимок экрана, вы можете видеть, что это беспорядок. Кто-нибудь, дайте мне совет, пожалуйста! enter image description here

struct TestTagView: View {
    @State private var flag = false
    let name: String
    var body: some View {
        Text("\(name)")
            .foregroundColor(.gray)
            .padding(.horizontal, 2)
            .background(RoundedRectangle(cornerRadius: 4).stroke(Color.gray.opacity(0.5)))
            .padding(1)
    }
}

struct TestTagsView: View {
    @State private var sheetShowing = false
    @Environment(\.managedObjectContext) var context
    @FetchRequest(entity: Tag.entity(), sortDescriptors: [NSSortDescriptor(key: "name", ascending: false)]) var items: FetchedResults<Tag>

    var body: some View {
        VStack {
            List {
                ForEach(items) { item in
                    HStack {
                        Image(systemName: "circle").onTapGesture {
                            print("test - item(\(item.name ?? "-")), check image tapped")
                        }
                        TestTagView(name: item.name ?? "-")
                        Spacer()
                    }
                }
                .onDelete(perform: { indexSet in
                    let index = indexSet.first!
                    let item = self.items[index]
                    self.context.delete(item)
                    try? self.context.save()
                })
            }
            Button(action: {
                let name = "New Tag \(UUID())"
                let tag = Tag(context: self.context)
                tag.id = UUID()
                tag.name = name
                try? self.context.save()
            }) {
                Text("New Tag")
            }
            Spacer()
            Button(action: { self.sheetShowing = true}) { Text("Show Sheet New") }
        }.sheet(isPresented: $sheetShowing) { TestNewTagsView().environment(\.managedObjectContext, self.context) }
    }
}

struct TestNewTagsView: View {
    @Environment(\.managedObjectContext) var context
    @Environment(\.presentationMode) var presentationMode

    var body: some View {
        Button(action: {
            let name = "New Tag \(UUID())"
            let tag = Tag(context: self.context)
            tag.id = UUID()
            tag.name = name
            try? self.context.save()
            self.presentationMode.wrappedValue.dismiss()
        }) {
            Text("New Tag")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...