【问题标题】:List that scrolls to certain row when button pressed in SwiftUI app在 SwiftUI 应用程序中按下按钮时滚动到特定行的列表
【发布时间】:2020-09-25 02:20:02
【问题描述】:

在 SwiftUI 应用程序中,我正在尝试创建一个列表,当按下按钮时自动滚动到下一行。

显然,此功能目前不适用于 SwiftUI 列表,但 UITableView 使用此答案的第 3 部分中提到的 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)
        }
    }
}

【问题讨论】:

    标签: swift iphone uitableview swiftui swiftui-list


    【解决方案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#>)
            }
    

    【讨论】:

    • 我建议将该库用于任何尚不具备 UIKit 功能的 SwiftUI 视图。
    猜你喜欢
    • 2017-12-02
    • 2020-12-09
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多