Я сделал тест, список тегов (любой объект) из coredata. если я добавлю тег из этого представления (внизу), изображение (кружок) в элементе списка может быть нажато. Но когда я добавляю тег из листа (TestNewTagsView), я не могу нажать на изображение. Реальная позиция удара go около 20 очков. Затем я прокручиваю список, все в порядке.
это снимок экрана, вы можете видеть, что это беспорядок. Кто-нибудь, дайте мне совет, пожалуйста!
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")
}
}
}