scrollToRow(at:at:animated:) SwiftUI

Posted

技术标签:

【中文标题】scrollToRow(at:at:animated:) SwiftUI【英文标题】: 【发布时间】:2019-11-24 06:08:11 【问题描述】:

我有 List 有 100 个项目 我想滚动到项目编号 20 我如何在SwiftUI 中实现这一点

这是我的简单 ListCode

struct ContentView: View 
    var body: some View 
        List 
            Button(action: 
                self.scrollToIndex(index: 20)
            ) 
                Text("Scroll To 20")
            
            ForEach(0..<100) _ in
                Text("Hello World")
            
        
    

    func scrollToIndex(index: Int) 

    

【问题讨论】:

【参考方案1】:

早些时候试图为这个answering here 找到一些解决方案。不久:今天(2019 年 11 月)我没有找到解决方案,除了使用 ScrollViewUITableView(最后一个 UIViewControllerRepresentable

更新在 9 月发现 Apple Developer Forums thread 有这个问题,但仍然没有答案

【讨论】:

【参考方案2】:

使用 ios 14 中的新 ScrollViewReader,您可以简单地执行以下操作:

struct ContentView: View 
    var body: some View 
        ScrollViewReader  proxy in
            List 
                Button(action: 
                    self.scrollToIndex(proxy, index: 20)
                ) 
                    Text("Scroll To 20")
                
                ForEach(0..<100)  i in
                    Text("Hello World").id(i)
                
            
        
    

    func scrollToIndex(_ proxy: ScrollViewProxy, index: Int) 
        withAnimation 
            proxy.scrollTo(index)
        
    

【讨论】:

以上是关于scrollToRow(at:at:animated:) SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章

swift3 scrollToRow 即使有空单元格

swift - tableview 滚动到指定位置

Swift 分段控制和 UITableView

UITableView 从当前位置滚动到底部

PB做大屏显示滚动窗口

滚动到表视图标题顶部