如何解决在 SWIFTUI 中添加新项目后,在列表中的图像上点击手势不起作用
我在图像上点击操作时遇到问题。我有一个简单的项目列表,每行有 4 个按钮。每行有 4 张图片,每张图片上都有一个 onTapGesture 操作链接。我第一次加载列表并且一切正常,但是当我尝试在列表中添加一个新项目(通过在导航栏上添加链接)时,会创建一个新行,但是如果我尝试点击,点击操作不起作用我添加的最后一行中的 4 张图像之一。例如,向上或向下箭头需要向上或向下移动一行。添加新行后,新行上的向上/向下箭头不起作用,但如果我点击最后一行 -1 向下箭头,两行开关和插入行上的图像点击操作开始起作用。
子类别列表来自另一个视图。
struct ExpandedCategoriaView : View {
@Binding var subCategorie : [disegnoCategoria]
......
List{
ForEach(self.subCategorie,id: \.id){
disegno in
HStack{
if(disegno.cancellato == 1 ){
Text(LocalizedStringKey(disegno.label))
.padding(.leading,10)
.foregroundColor(.red)
Spacer()
Image(systemName: "clock.arrow.circlepath")
.padding(EdgeInsets(top: 5,leading: 5,bottom: 5,trailing: 5))
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(Color.red,linewidth: 1))
.imageScale(.medium)
.onTapGesture {
DBHelper.dbHelperInstance.restoreLogicdisegnoCategoriaById(iddisegnoCategoria: disegno.id)
subCategorie = getdisegnoCategorieByCategoria()
}
}
else{
if(disegno.editable == 0)
{
Text(LocalizedStringKey(disegno.label))
.padding(.leading,10)
.foregroundColor(.blue)
Spacer()
}
else
{
Text(LocalizedStringKey(disegno.label))
.padding(.leading,10)
.foregroundColor(.green)
Spacer()
HStack{
Image(systemName: "arrow.down")
.padding(EdgeInsets(top: 5,trailing: 5))
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(Color.orange,linewidth: 1))
.imageScale(.medium)
.onTapGesture {
godown(disegnoCategoria: disegno)
}
.padding(.trailing,25)
Button(action: {
goUp(disegnoCategoria: disegno)
print("spinto bottone")
})
{
Image(systemName: "arrow.up")
.padding(EdgeInsets(top: 5,trailing: 5))
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(Color.orange,linewidth: 1))
.imageScale(.medium)
.padding(.trailing,25)
}
.buttonStyle(BorderlessButtonStyle())
//.buttonStyle(PlainButtonStyle())
Image(systemName: "pencil")
.padding(EdgeInsets(top: 5,trailing: 5))
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(Color.yellow,linewidth: 1))
.imageScale(.medium)
.onTapGesture {
activeSheetdisegnoCategorie = .update
self.selecteddisegno = disegno
}
Image(systemName: "trash.fill")
.padding(EdgeInsets(top: 5,trailing: 5))
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(Color.red,linewidth: 1))
.imageScale(.medium)
.onTapGesture {
DBHelper.dbHelperInstance.deleteLogicdisegnoCategoriaById(iddisegnoCategoria: disegno.id)
subCategorie = getdisegnoCategorieByCategoria()
}
.padding(.leading,25)
}
}
}
}
}
}
.navigationBarTitle(Text(LocalizedStringKey("categoria_layout_expand_titolo")),displayMode: .inline)
.navigationBarItems(trailing: Button(action: {
activeSheetdisegnoCategorie = .add
},label: {
Text(LocalizedStringKey("add"))
}))
.sheet(item: $activeSheetdisegnoCategorie,ondismiss: {
self.subCategorie = getdisegnoCategorieByCategoria()
}) {
item in
switch item {
case .add :
AdddisegnoCategoriaView(activeSheetdisegnoCategoria: $activeSheetdisegnoCategorie,listadisegnoCategorie: $sottocate.listadisegnoCategorie,toRefresh: $updater,categoriaExpanded: categoriaToExpand,nuovodisegnoCategoria: {
disegnoCategoria in
DBHelper.dbHelperInstance.insertdisegnoCategoriaObj(disegnoCategoria: disegnoCategoria)
subCategorie = getdisegnoCategorieByCategoria()
sottocate.listadisegnoCategorie = getdisegnoCategorieByCategoria()
})
}
}
}
.onAppear(){
getListaSubCategorie()
getListaSubCategorieProva()
}
}
class disegnoCategoria : Identifiable {
var id : Int
var idCategoria: Int
var ordine : Int
var tipo : Int
var label : String
var editable : Int
var cancellato : Int
var obbligatorio : Int
init(id: Int,idCategoria: Int,ordine: Int,tipo: Int,label: String,editable: Int,cancellato: Int,obbligatorio: Int) {
self.id = id
self.idCategoria=idCategoria
self.ordine=ordine
self.tipo = tipo
self.label=label
self.editable=editable
self.cancellato=cancellato
self.obbligatorio=obbligatorio
}
init() {
self.id = -1
self.idCategoria = -1
self.ordine = -1
self.tipo = -1
self.label = ""
self.editable = -1
self.cancellato = -1
self.obbligatorio = -1
}
}
插入 2 行并重新加载视图后 [1]: https://i.stack.imgur.com/DL0No.png
点击向上足球箭头 [2] 后: https://i.stack.imgur.com/pTmXH.png
添加了高尔夫,但如果我尝试点击向上箭头,它不会向上移动 [3]: https://i.stack.imgur.com/s101V.png
有什么想法吗?谢谢大家
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。