在 SwiftUI 应用程序中按下按钮时滚动到特定行的列表
List that scrolls to certain row when button pressed in SwiftUI app
在 SwiftUI 应用程序中,我正在尝试创建一个列表,该列表在按下按钮时自动滚动到下一行。
显然,SwiftUI List 目前无法实现此功能,但 UITableView 可以使用此答案第 3 部分中提到的 scrollToRowAtIndexPath 方法 这个答案解释得很好,但没有建议如何实施他们描述的最佳解决方案。
下面是列表在 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)
}
}
}
看看这个漂亮的图书馆,https://github.com/siteline/SwiftUI-Introspect。有了它你可以这样做:
import Introspect
List {
Text("some")
Text("list")
}.introspectTableView { tableView in
tableView.scrollToRowAtIndexPath(<#IndexPath#>, atScrollPosition: <#UITableView.ScrollPosition#>, animated: <#Bool#>)
}
在 SwiftUI 应用程序中,我正在尝试创建一个列表,该列表在按下按钮时自动滚动到下一行。
显然,SwiftUI List 目前无法实现此功能,但 UITableView 可以使用此答案第 3 部分中提到的 scrollToRowAtIndexPath 方法
下面是列表在 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)
}
}
}
看看这个漂亮的图书馆,https://github.com/siteline/SwiftUI-Introspect。有了它你可以这样做:
import Introspect
List {
Text("some")
Text("list")
}.introspectTableView { tableView in
tableView.scrollToRowAtIndexPath(<#IndexPath#>, atScrollPosition: <#UITableView.ScrollPosition#>, animated: <#Bool#>)
}