在 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...