如何在SwiftUI中动态扩展Views列表?

问题描述

因此,我正在制作购物清单应用。我已经创建了行视图,其中包含一个复选框和一个文本字段。

每个元素的View结构如下:

struct Vare: View {
    
    @State var vare: String = ""
    @State var checked = false
    
    var body: some View {
            HStack {
                
                Button(action: {
                    self.checked.toggle()
                }) {
                    Image(self.checked ? "CheckBox":"UnCheckBox")
                    .resizable()
                    .frame(width: 20,height: 20)
                    .padding(.leading)
                }
                TextField("neste vare...",text: $vare)
                   .frame(maxWidth: .infinity)
                    .opacity(self.checked ? 0.3:1) // here
        }
    }
    
}

现在,我想将“ Vare”视图动态添加到列表中。这是我希望它起作用的方式:

  1. 我希望列表以“ Vare”的单行开头
  2. 无论何时用户在文本字段中输入文本,我都希望程序创建另一个“ Vare”行。
  3. 最后,如果列表中的所有项目都被“选中”,我希望列表删除自身并以“ Vare”的未选中一行重新开始。

我并不是说要有人为我编写整个代码,但是对于Swift来说,我是一个陌生的人,真的需要我能得到的所有帮助:D

这是我到目前为止的列表。它不会编译://////

import SwiftUI

struct VareListe: View {
    
    @State var liste: Array<Vare> = [Vare()]
    
    var body: some View {
        List(liste) { vare in
            addLine()
        }
        
    }
    func addLine (){
        if liste[liste.endindex -1].vare != "" {
            liste.append(Vare())
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)