У меня есть массив Views в родительском View в SwiftUI. Каждый из этих видов в массиве имеет жест перетаскивания, который позволяет мне перемещать их по экрану по отдельности.
У меня также есть другой вид в родительском виде, напоминающий значок корзины.
Когда я перетаскиваю один из моих массивов видов в пространство корзины, как я могу удалить этот перетаскиваемый вид из массива, чтобы он эффективно «удалялся» с экрана?
Это тот же вопрос, что и здесь, но я ищу решение SwiftUI вместо obj- c: Удаление UILabel при перетаскивании на изображение
Редактировать: Это то, что код выглядит следующим образом:
Родительский вид:
struct parentView: View {
@State var childViews: [ChildView]
var body: some View {
ForEach(self.childViews, id: \.childId) { childView in
childView
}
.overlay(
DeleteIcon()
.padding(.top, 200)
)
}
}
Дочерний вид (их несколько):
struct ChildView: View {
let childId = UUID()
// dragging vars
@State private var currentPosition: CGSize = .zero
@State private var newPosition: CGSize = .zero
var dragGesture: some Gesture {
DragGesture()
.onChanged { value in
self.currentPosition = CGSize(width: value.translation.width + self.newPosition.width, height: value.translation.height + self.newPosition.height)
}
.onEnded { value in
self.currentPosition = CGSize(width: value.translation.width + self.newPosition.width, height: value.translation.height + self.newPosition.height)
self.newPosition = self.currentPosition
}
}
var body: some View {
Rectangle()
.fill(Color.blue)
.frame(width: 200, height: 200)
.offset(x: currentPosition.width, y: currentPosition.height)
.gesture(dragGesture)
}
}
Значок удаления:
struct DeleteIcon: View {
var body: some View {
Rectangle()
.fill(Color.red)
.frame(width: 50, height: 200)
}
}