Swift 添加一个按钮,从使用 foreach 循环的列表中删除行

Posted

技术标签:

【中文标题】Swift 添加一个按钮,从使用 foreach 循环的列表中删除行【英文标题】:Swift add a button that deletes row from list that uses a foreach loop 【发布时间】:2020-07-20 20:51:59 【问题描述】:

我有一个包含 foreach 循环的列表,并且我想在每一行中创建一个删除该行的删除按钮。

我有一个结构数组

struct Lists
    var title : String
    var id = UUID()



和数组

@State var list = [Lists]()

这是列表

List        
      ForEach(list, id : \.id ) item in
          NavigationLink(destination:DetailView(word:item.title))
              HStack 
                 Text(item.title)
                 Spacer()
                 Button(action: 
                      self.list.remove(at: 0)
                 )
                      Text("×")
                 
              
          
      
  

我已将remove(at:0) 设置为零,因为我不知道如何在 for 循环中获取索引。

名单:

【问题讨论】:

【参考方案1】:

我通常认为使用计数更容易......像这样:

List 
      ForEach(0..<list.count, id : \.self ) index in
        NavigationLink(destination:DetailView(word: list[index].title))
            HStack 
               Text(list[index].title)
               Spacer()
               Button(action: 
                    self.list.remove(at: index)
               )
                    Text("×")
               
            
        
      
   

【讨论】:

这是效率低下还是什么?我以为我在某处读到这不是那么好 也许,因为数组检查了两次。但我认为影响不大。

以上是关于Swift 添加一个按钮,从使用 foreach 循环的列表中删除行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 5 中以编程方式从右上角添加垂直按钮列表

使用foreach一次性添加多个单选按钮

如何使用 Swift 从 UITabBarController 的子类触发动作

如何检查是不是从 Swift 的 XIB 文件中单击了按钮?

使用简写参数名称 $0 在 ForEach 中为 SwiftUI 添加按钮

php foreach循环并在表单中添加更多按钮