首页 > 解决方案 > SwiftUI beta 7:添加项目时触发“列表”滚动?

问题描述

使用 Xcode 11 beta 7 和 Catalina beta 19A536g(6?)

在我的 SwiftUI 应用程序中,我有一个带有列表的简单视图。在列表下方,我有一个按钮可以将项目添加到列表中。

添加一些项目后,新添加的项目不可见,因为它们超出了列表的内容大小。

var body: some View {
  NavigationView {
    VStack {
      List(self.accounts) { account in
        Text("\(account.name)")
      }

      Button("Add new account") {
        self.addNewAccount()
      }
    }.navigationBarTitle("Select account")
  }
}

我想我想要一些绑定列表的内容偏移量,传递给我的方法addNewAccount并触发列表的滚动。

我可以以某种方式以编程方式触发列表向下滚动到新内容吗?

标签: swiftxcodeswiftuixcode11

解决方案


实现它的最简单方法是翻转列表及其内容.scaleEffect(x: 1, y: -1, anchor: .center),以便获得一个颠倒的结构化列表,但内容正确,因此,在列表中索引 0 处的项目插入将在底部以一个不错的方式执行看动画

List {
   ForEach(self.content) { itemContent in
       Item(itemContent).scaleEffect(x: 1, y: -1, anchor: .center)   
   }
}.scaleEffect(x: 1, y: -1, anchor: .center)

推荐阅读