首页 > 解决方案 > SwiftUI:使用 ListView 的替代方案?

问题描述

我想要一个可滚动的列表,当点击每一行时,它会将您带到不同的视图。在每一行内,我希望有一个心形按钮,当点击它时会覆盖导航行为,只是切换一个心形填充/取消填充。
作为这样做的替代方案,在 NavigationView 中使用 ScrollView 并让每个列表项成为 ScrollView 是否有意义VStack

伪代码层次结构:

NavigationView {
   ScrollView {
      VStack {
         // Button       
      }
  }
}

有没有更好的方法(或更首选的方法)来实现这一点?

标签: swiftui

解决方案


使用LazyVStack

let items = ["A","B"]

var body: some View {
    ScrollView {
        LazyVStack(spacing: 10) {
            ForEach(items, id: \.self) { item in
                Text(item)
            }
        }
    }
}

推荐阅读