在SwiftUI应用中,我试图创建一个列表,当按下按钮时该列表会自动滚动到下一行。
显然,SwiftUI列表当前无法使用此功能,但此答案的第3部分中提到的UITableView使用scrollToRowAtIndexPath方法使用了https://stackoverflow.com/a/58830883/11698443此答案已得到很好的解释,但并不建议如何使用实施他们所说的最佳解决方案。
以下是该列表在SwiftUI中的外观示例代码。目标是按下按钮,然后列表滚动到下一行。我认为该解决方案需要与UIKit交互才能起作用。如果有人能够找出最干净的方法来做到这一点,那将是非常棒的。不幸的是,无法使用所有SwiftUI做到这一点。
预先感谢任何认为自己可以解决此问题的人。
import SwiftUI
struct ScrollingList: View {
var body: some View {
List(0 ..< 10) { item in
VStack {
Text("\(item)")
Button(action: {}) {
Text("Scroll To Next Item")
}
}
.frame(height: 500)
.background(Color.blue)
}
}
}
答案 0 :(得分:1)
签出这个漂亮的库https://github.com/siteline/SwiftUI-Introspect。有了它,您可以执行以下操作:
import Introspect
List {
Text("some")
Text("list")
}.introspectTableView { tableView in
tableView.scrollToRowAtIndexPath(<#IndexPath#>, atScrollPosition: <#UITableView.ScrollPosition#>, animated: <#Bool#>)
}