首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SwiftUI beta 7:添加条目时触发`List`滚动?

在SwiftUI beta 7中,要在添加条目时触发List滚动,可以使用ScrollViewReaderScrollViewProxy来实现。

首先,需要在List外部包裹一个ScrollViewReader,并将其绑定到一个@State属性上,以便在需要时滚动到指定位置。

代码语言:txt
复制
struct ContentView: View {
    @State private var scrollToIndex: Int? = nil
    
    var body: some View {
        ScrollViewReader { scrollViewProxy in
            List {
                ForEach(0..<10) { index in
                    Text("Item \(index)")
                        .id(index)
                }
            }
            .onChange(of: scrollToIndex) { newIndex in
                if let index = newIndex {
                    withAnimation {
                        scrollViewProxy.scrollTo(index, anchor: .center)
                    }
                }
            }
        }
    }
}

然后,在需要触发滚动的地方,可以通过修改scrollToIndex属性的值来实现滚动。例如,可以在按钮的动作方法中添加以下代码:

代码语言:txt
复制
Button("Add Item") {
    scrollToIndex = 10 // 滚动到索引为10的位置
}

这样,当点击"Add Item"按钮时,列表将滚动到索引为10的位置。

这种方法可以用于在列表中动态添加条目时,自动滚动到最新添加的条目位置。

关于SwiftUI的更多信息,可以参考腾讯云的官方文档:SwiftUI开发指南

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在 Text 中实现基于关键字的搜索和定位

image-20220822161247454点击切换按钮定位到对应的搜索结果为 TranscriptionRow 视图添加显式标识符,并通过 ScrollViewProxy 滚动到指定的位置。...通过 id 修饰器为 transcription 添加定位信息List(0.....请阅读 优化在 SwiftUI List 中显示大数据集的响应效率[6] 以及 避免 SwiftUI 视图的重复计算[7] 两篇文章,了解更多有关性能优化方面的内容通过 currentPostion 获取需要滚动到的...,我们通常会用两种方式添加搜索栏 —— 1、通过 VStack 将搜索栏放置在 List 下方,2、使用 overlay 将搜索栏放置在 List 视图的上层。...List 中显示大数据集的响应效率: https://www.fatbobman.com/posts/optimize_the_response_efficiency_of_List/[7] 避免 SwiftUI

4.2K30

Ask Apple 2022 与 SwiftUI 有关的问答(下)

因此,如果你正在创建一个视图来显示可滚动的内容,并可能进行选择操作,那么在 iOS 和 macOS 上使用 List 将有最好的体验。...在 SwiftUI 早期版本中,当在 iOS 中使用系统中文输入法,很容易触发这种情况。但后期逐步得到了修复。近期,在聊天室中我也看到了类似的讨论( 我本人尚未在 iOS 16 上遇到 )。...image-20221023171100484滚动速度Q:有好的方式在 List 和 ScrollView 滑动监听滑动的 velocity 值么?...在 SwiftUI 中,有一个从第一版开始就存在但尚未公开的纯 SwiftUI 实现的滚动容器 —— _ScrollView 。...v=du_Bl7Br9DM&t=107s[11] The SwiftUI Layout Protocol : https://swiftui-lab.com/layout-protocol-part-1

14.8K30
  • 如何判断 ScrollView、List 是否正在滚动

    欢迎大家在 Discord 频道[2] 中进行更多地交流判断一个可滚动控件( ScrollView、List )是否处于滚动状态在某些场景下具有重要的作用。...比如在 SwipeCell[3] 中,需要在可滚动组件开始滚动,自动关闭已经打开的侧滑菜单。遗憾的是,SwiftUI 并没有提供这方面的 API 。...在 ScrollView、List 发生滚动,它们内部的子视图的位置也将发生改变。我们将以是否可以持续接收到它们的位置信息为依据判断当前是否处于滚动状态。...ScrollView + VStack( HStack )这类的组合,只需为可滚动视图添加一个 scrollSensor 即可。...对于 List、ScrollView + LazyVStack( LazyHStack )这类的组合,需要为每个子视图都添加一个 scrollSensor。

    3.8K40

    优化在 SwiftUI List 中显示大数据集的响应效率

    创建数据集 通过 List 展示数据集 用 ScrollViewReader 对 List 进行包裹 给 List 中的 item 添加 id 标识,用于定位 通过 scrollTo 滚动到指定的位置...也就是当显示主界面菜单,列表视图已经完成了实例的创建(可以通过在 ListEachRowHasID 的构造函数中添加打印命令得以证明),因此也不应是实例化列表视图导致的延迟。...当仅通过 ForEach 来指定显示标识List 会对这些视图的显示进行优化,仅在需要显示才会对其进行实例化。...解决方案一 从 iOS 15 开始,SwiftUIList 添加了更多的定制选项,尤其是解除了对列表行分割线设置的屏蔽且添加了官方的实现。...我们将通过 SwiftUI-Introspect[7] 来实现在 List滚动到列表两端。

    9.1K20

    深入了解 SwiftUI 5 中 ScrollView 的新功能

    不限于 ScrollView,支持所有可滚动容器(包括 List、TextEditor 等)。 将可滚动容器内的所有子视图视为一个整体,并为其添加 margin。...可采用 优化在 SwiftUI List 中显示大数据集的响应效率[5] 一文中介绍的方式来解决。 scrollPostion(id:) 使用此修饰符可以让滚动视图滚动到特定的位置。...(视图标识) 不支持锚点设定,固定锚点为子视图的 center 正如 优化在 SwiftUI List 中显示大数据集的响应效率[6] 一文所提到的,当数据集很大,也会出现性能问题。.../posts/optimize_the_response_efficiency_of_List/ [6] 优化在 SwiftUI List 中显示大数据集的响应效率: https://www.fatbobman.com.../posts/optimize_the_response_efficiency_of_List/ [7] VisualEffect: https://developer.apple.com/documentation

    78520

    SwiftUI 视图的生命周期研究

    调用 body 计算结果 通过在 body 中添加类似如下的代码,我们可以在 SwiftUI 调用实例的 body 获得通知: let _ = print("update some view") 计算...比如在 List 和 LazyVStack 中,Cell 视图在创建之后即使滚动出屏幕不参与布局与渲染,但 SwiftUI 仍会保留这些视图的数据,直到 List 或 LazyVStack 被销毁。...或 LazyVStack 中,Cell 视图进入屏幕后触发 onAppear,滚动出屏幕后会触发 onDisappear,在 Cell 视图的存续期内可以多次触发 onAppear 和 onDisappear...另外,由于 List 和 LazyVStack 的布局逻辑不同(List 的容器高度是固定的,LazyVStack 的容器高度是不固定的,向下预估的),两者触发 onDisappear 的时机点也不同。...List 是上下两侧都会触发,LazyVStack 只有下方会触发

    4.4K30

    iOS14 致敬 Android 之 Meet Widget

    在你的应用中添加 Widget 将 Widget 添加到 App 中需要进行少量的设置,并且将使用 SwiftUI 来展示他的内容。...Provider 为 Widget 生成 timeline,并在每个条目中包含游戏状态详细信息, 每个 timeline 条目的日期到达,WidgetKit 都会调用 content closure...Provide Timeline Entries Timeline provider 会生成一个由时间线条目组成的时间线,每个条目都指定更新 Widget 内容的日期和时间。...当用户从 Widget 库中添加 Widget ,他们从 Widget 支持的类型中选择特定的系列(小,中或大),Widget 的 content closure 必须能够渲染其支持的每个类型, WidgetKit...当用户与您的 Widget 交互,WidgetKit 会激活您的应用程序,并传递您指定的URL, 当您的应用激活,通过将用户带到相关位置来处理 URL。

    1.4K20

    Apple Widget:下一个顶级流量入口?

    当然还有一些由于设备环境变化触发的行为也会触发 System Reloads,比如设备时间进行了变更。 App-Driven Reloads:指的是 App 请求 Widget 下一阶段刷新的数据。...当应用在前台运行的时候,App 可以直接请求WidgetCenter的 API 来触发 Reload Timeline;而当应用处于后台,后台推送(Background Notification)也可以触发...所以为了避免大家开发过多的 Widget Extension 导致搜索起来麻烦,在 Widget Gallery 中只能看到一个条目。 ?...▐ 不可交互,只可点击 Widget 的 UI 是无状态的,不支持滚动,也不支持像 Switch 一样的互动元素。唯一开放的能力只有通过点击和DeepLink 来唤起主 App。...id=yv6so7ie Meet WidgetKit https://developer.apple.com/videos/play/wwdc2020/10028/ What's new in SwiftUI

    1.9K20

    SwiftUI + Core Data App 的内存占用优化之旅

    此时请不要惊讶,你可以尝试点击添加数据按钮继续增加数据,再次滚动到底部,你将看到更加令人震惊的内存占用数值,不过有极大的可能会看不到( 应用已经崩溃了 )。...当子视图进入惰性容器的可视区域SwiftUI 会调用它的 onAppear 闭包,子视图退出可视区域,会调用 onDisappear 闭包。...它保证了,只在真正对数据有需求,才对数据进行获取( 实例化 )。在提高了性能的同时,也尽量减少了对内存的占用。 在本例中,只有视图首次出现在 List 的可视区域,Item 才会被填充数据。...数据的多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示,实际上在内存中至少保存了三份拷贝: 行缓存 托管对象上下文( 托管对象被填充后 ) 显示该图片的 SwiftUI...objectID { // 获取 ObjectID 并不会触发惰性填充 let imageData: Data?

    1.3K10

    SwiftUI TextField 进阶 —— 事件、焦点、键盘

    onCommit 当用户在输入过程中按下(或点击)return键触发 onCommit(无法通过代码模拟触发)。...对 searchable 的支持 iOS 15 新增的搜索框在点击return同样会触发 onSubmit,不过需要将 triggers 设置为 search: struct OnSubmitForSearchableDemo...在 SwiftUI 3.0 之前,我们必须在主视图上另外绘制或者使用非 SwiftUI 的方式来解决问题,在 SwiftUI 3.0 中,由于添加了原生设置键盘辅助视图(下文具体介绍)的功能,解决上述问题将不再困难...另外,有时候为了提高交互体验,我们可以希望用户在录入结束后,无需点击return按键,通过点击屏幕其他区域或者以滚动列表的方式来取消键盘。同样也需要使用编程的方式让键盘消失。...下面的代码将为输入浮点数添加正负转换以及确认按钮: import Introspectstruct ToolbarKeyboardDemo: View { @State var price =

    13.2K10

    AnyView 对 SwiftUI 性能的影响

    这 2 个卡顿发生在加载新消息并将其附加到消息列表。在加载消息进行任何后续滚动,不会影响性能。在此测试期间,FPS 值的平均值约为每秒 59 帧。滚动是流畅且响应迅速的。...此测试中的平均 FPS 约为每秒 55 帧,你可能会注意到在滚动出现一些可见的故障,尽管情况并不那么糟糕。...在浏览数据修改我们可以进行的另一个测试是性能测试 - 向列表发送大量内容并强制更新视图(例如,响应消息),同时我们也浏览数据。这将在较短的时间间隔内触发视图的多次重绘。...没有 AnyView在没有 AnyView 包装器的情况下进行测试产生了与常规滚动测试相似的结果(58-59 FPS)。这也是预期的,因为 SwiftUI 知道视图的标识和结构。...当需要更新视图,仅对其进行更改(例如,向视图添加另一个反应)。有 AnyView当我们在这种情况下使用 AnyView ,事情就变得有趣了 - 在短时间内对屏幕上的视图进行频繁更新。

    12100

    解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

    众所周知,SwiftUI 是一个响应式框架,这意味着,当数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示,应直接对状态进行修改。...这两个错误包括:通过手势取消 Sheet 后,快速右滑导航容器导致应用锁死;以及在滚动中返回上层视图导致应用崩溃。...为 NavigationStack 添加一个屏蔽手势的前景视图,以确保用户只能在 showSheet 为否通过滑动返回到上一层视图。...当视图正在滚动返回上一层视图会导致应用崩溃 这是一个由 xiaogd 在我的 Discord 论坛中提出的 问题[3]。...请至少进入第三级视图 滚动当前视图 当视图处于滚动状态,点击 NavigationStack 左上角的 “Back” 按钮。

    31920

    SwiftUI + Core Data App 的内存占用优化之旅

    此时请不要惊讶,你可以尝试点击添加数据按钮继续增加数据,再次滚动到底部,你将看到更加令人震惊的内存占用数值,不过有极大的可能会看不到( 应用已经崩溃了 )。...当子视图进入惰性容器的可视区域SwiftUI 会调用它的 onAppear 闭包,子视图退出可视区域,会调用 onDisappear 闭包。...它保证了,只在真正对数据有需求,才对数据进行获取( 实例化 )。在提高了性能的同时,也尽量减少了对内存的占用。 在本例中,只有视图首次出现在 List 的可视区域,Item 才会被填充数据。...数据的多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示,实际上在内存中至少保存了三份拷贝: 行缓存 托管对象上下文( 托管对象被填充后 ) 显示该图片的 SwiftUI...objectID { // 获取 ObjectID 并不会触发惰性填充 let imageData: Data?

    2.4K40

    解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

    众所周知,SwiftUI 是一个响应式框架,这意味着,当数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示,应直接对状态进行修改。...这两个错误包括:通过手势取消 Sheet 后,快速右滑导航容器导致应用锁死;以及在滚动中返回上层视图导致应用崩溃。...为 NavigationStack 添加一个屏蔽手势的前景视图,以确保用户只能在 showSheet 为否通过滑动返回到上一层视图。...当视图正在滚动返回上一层视图会导致应用崩溃这是一个由 xiaogd 在我的 Discord 论坛中提出的 问题。...请至少进入第三级视图滚动当前视图当视图处于滚动状态,点击 NavigationStack 左上角的 “Back” 按钮。

    679110

    解析SwiftUI布局细节(二)循环轮播+复杂布局

    这篇我们还是说我们关于SwiftUI的东西,再提一下Demo代码我已经提交上Git了,目前Demo进度为一级页面基本上结束,地图点击大头针的添加也刚处理完,代码有需要的小伙伴可以去Git看看,项目地址...3、再提一点关于上面说的滚动视图,在UIKit中我们可以用UICollectionView搞定一切,但是在SwiftUI中没有这个控件,我建议采用的方式是 ScrollView + HStack + VStack...的方式去实现,很多同行有说目前来看SwiftUIList在数据量大的情况下性能不是特别好,采用ScrollView是个不错的方式,而且也很容易构建出来,并不是说每一个Item的位置都需要你去计算,...循环轮播实现 ---- 总结一下循环轮播怎么实现,采用的方案就是 HStack + Gesture + Timer 的方式,这三者就能实现一个自动循环滚动或者手动滚动的轮播。...具体的我们会看下面的代码,他们的区别就是像拖拽我们可以监控它的改变状态,点击或者双击、长按等我们可以添加事件等等。

    12K20

    Swift 周报 第十四期

    为了解决这个问题,苹果表示,用户应该在初始化 iOS ,在提示连接到 Wi-Fi 网络选择“用 iTunes 连接到 Mac 或 PC”,然后返回到之前的屏幕,使用 Wi-Fi 再次尝试,直到激活成功...使用 iOS 16.1 Beta 版和 Xcode 14.1 Beta 版,开发实时活动功能 新的 ActivityKit 框架现已在 iOS 16.1 Beta 版和 Xcode 14.1 Beta...SE-0369[3] 同步 CustomDebugString 协议到 AnyKeyPath 此提案主要目的是将 CustomDebugStringConvertible 的协议添加到 AnyKeyPath...但是,当 conformance 存在,除非声明确实符合协议要求,否则程序格式错误。...SwiftUI 之 HStack 和 VStack 的切换 摘要: 本文介绍了当涉及到水平和垂直的变体( HStack 和 VStack ),我们需要如何在这两者之间动态的切换。

    3.3K10
    领券