#ios #swiftui
Вопрос:
У меня есть список с каждым элементом, который имеет навигационную ссылку и представление ячейки в ZStack.
List(inventory.items) { food in
ZStack {
NavigationLink(
destination: InventoryEditionView(food: food, index:inventory.items.firstIndex(of: food)!))
{
EmptyView()
}
.disabled(!model.seletedFoodItems.isEmpty)
InventoryListCell(food: food, model: model)
}
}
В представлении ячейки я поставил галочку, чтобы пользователи могли делать несколько вариантов выбора.
Button{
if model.isSelected(food: food) {
model.deselect(food)
} else {
model.select(food)
}
} label: {
Image(systemName: "checkmark.circle")
.frame(width: 44, height: 44)
.imageScale(.large)
.foregroundColor(model.isSelected(food: food) ? Color("primary") : Color(.systemGray))
}
Однако, где бы я ни нажимал в представлении ячейки, это всегда запускает выделение. Можно ли активировать выбор только тогда, когда нажатие находится на галочке?
Ответ №1:
вы могли бы попробовать использовать
.allowsHitTesting(false)
чтобы «отключить» выделение при нажатии на представления, которые вы
не хотите инициировать выделение.
Ответ №2:
Вместо кнопки я просто использовал изображение и настроил его цвет в onTapGesture.
Image(systemName: "checkmark.circle")
.frame(width: 44, height: 44)
.imageScale(.large)
.foregroundColor(model.isSelected(food: food) ? Color("primary") : Color(.systemGray))
.onTapGesture {
if model.isSelected(food: food) {
model.deselect(food)
} else {
model.select(food)
}
}