当列表项在 Swift 中增加时,列表框架高度不会改变

List frame-height is not changing when the list items are increased in Swift

我正在学习 SwiftUI 语言,并且正在编写我的第一个供个人使用的应用程序。 所以我想要实现的是,当我写一个要添加到列表中的名称时,该名称就会添加到该列表中。但是,此列表的框架是标准的单栏,甚至隐藏了第一个列表项的一部分。我可以在列表中滚动,但这不是我希望它工作的方式。有没有一种方法可以创建一个标准的框架,该框架是 1 项的完美尺寸,并且对于添加到列表中的每个列表项,框架的高度都会增加以使其完美。如果你明白我的意思

我的代码:

struct PunishView: View {
    @StateObject var viewModal = StocksViewModel()
    @State var text = ""
    
    var body: some View {
    NavigationView {
        VStack {
            List {
             Section(header: Text("Lapsus")) {
                   TextField("Naam...", text: $text)
                   .frame(minWidth: 0,
                          idealWidth: 100,
                          maxWidth: .infinity,
                          minHeight: 0,
                          idealHeight: 30,
                          maxHeight: .infinity,       
                          alignment: .center)
  
                   Button(action: {
                    self.tryToAddToList()
                    },
                   label: {
                    Text("Voeg toe")
                        .bold()
                        .frame(
                            width: 400,
                            height: 60,
                            alignment: .center)
                        .background(Color.purple)
                        .cornerRadius(10)
                        .foregroundColor(Color.white)
                   })
                   .frame(minWidth: 0,
                          idealWidth: 100,
                          maxWidth: .infinity,
                          minHeight: 0,
                          idealHeight: 30,
                          maxHeight: .infinity,       
                          alignment: .center)}
                
                    List {
                        ForEach(viewModal.stocks) {stock in
                            AdPistumLijst(title: stock.title)
                            }     
                        }
                    .listStyle(PlainListStyle())
                    
        }
    }
        .navigationTitle("Straffenlijst")
  }
}
            func tryToAddToList (){
               guard !text.trimmingCharacters(in: .whitespaces).isEmpty else {
               return
               }
            let  newStock = Stock(title: text)
            viewModal.stocks.append(newStock)
            text = ""
    } 
}

您在 List 中有一个 List,这不是一个好主意。除非你手动设置那个inner-List的高度,否则它不知道要用多少space。

您可以通过更改以下内容来解决此问题:

List {
    ForEach(viewModal.stocks) { stock in
        AdPistumLijst(title: stock.title)
    }
}
.listStyle(PlainListStyle())

为此:

ForEach(viewModal.stocks) { stock in
    AdPistumLijst(title: stock.title)
}

结果(使用的示例数据):

With inner List Without inner List