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

如何在不处于编辑模式的情况下允许SwiftUI列表中的行重新排序?

在不处于编辑模式的情况下允许SwiftUI列表中的行重新排序,可以通过以下步骤实现:

  1. 创建一个继承自Identifiable协议的模型结构体,用于表示列表中的每一行数据。
代码语言:txt
复制
struct Item: Identifiable {
    let id = UUID()
    var name: String
}
  1. 在视图中使用@State属性包装一个布尔值,用于表示是否处于编辑模式。
代码语言:txt
复制
@State private var isEditing = false
  1. 创建一个可绑定的数组,用于存储列表中的行数据。
代码语言:txt
复制
@State private var items = [
    Item(name: "Item 1"),
    Item(name: "Item 2"),
    Item(name: "Item 3")
]
  1. 在视图中使用List来展示行数据,并根据编辑模式显示不同的按钮。
代码语言:txt
复制
List {
    ForEach(items) { item in
        Text(item.name)
    }
    .onMove(perform: move)
}
.navigationBarItems(trailing: EditButton())
.environment(\.editMode, .constant(isEditing ? EditMode.active : EditMode.inactive))
  1. 实现move方法,用于处理行的重新排序。
代码语言:txt
复制
func move(from source: IndexSet, to destination: Int) {
    items.move(fromOffsets: source, toOffset: destination)
}

通过以上步骤,我们可以在不处于编辑模式的情况下允许SwiftUI列表中的行重新排序。用户可以通过点击导航栏的编辑按钮进入编辑模式,然后通过拖动行来重新排序。这种功能在需要对列表中的数据进行排序或调整顺序的场景中非常有用。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

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

与 macOS 上 List 相比,许多控件在 Form 外观和行为都有所不同。与 Form 不同是,List 内置了对编辑模式( Edit Mode )支持。...开发者即使无法实现这样布局容器,也应对各种尺寸需求定义有清晰理解。在 SwiftUI 布局 —— 尺寸( 上 )[8] 一文,对建议尺寸几种模式都进行了介绍。...任何自定义布局完整实现都比我在这里帖子快速勾勒出来要长,但总体思路是,你可以创建一个布局来查询其子级理想大小并相应地对它们进行排序。...Swiftcord[12] 代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 显示大数据集响应效率[13] 一文,了解苹果工程师推荐方法。...Text 与 TextField 在编辑模式切换Q:在 editMode 文档建议,在非编辑模式下,可以选择将 Text 视图换成 TextField 。

14.7K30

代码变十,苹果SwiftUI可视化编程让开发者惊呼完美

而对于开发者来说,新发布 SwiftUI 可能是最吸引人特性,在 Craig Federighi 演示,我们可以轻松地把一百前端代码缩减到十几行。...SwiftUI 自动支持动态字体调整(Dynamic Type)、暗黑模式(Dark Mode)、本地化(localization)和辅助功能(accessibility),这意味着开发者第一 SwiftUI...这种声明式方式甚至允许使用复杂功能,动画(animation)。只需要几行代码,即可添加动画在任何控件上,并且可以使用易于调用特效。...Xcode 会立即重新编译你修改,并将它们插入到 APP 运行版。因此在整个开发,预览可视化与代码可编辑性能同时支持并交互。 ?...动态替换:Swift 编译器和运行时可以完全嵌入到 Xcode ,所以我们 APP 会一直处于构建和运行状态。我们看到预览界面并不是对用户界面的近似,它就是我们实时 APP。

4K10

Ask Apple 2022 与 SwiftUI 有关问答(上)

是否有任何建议用来检测列表选择,类似于 “NavigationLink”,但不导航到另一个视图(例如,显示 Sheet 或从列表中选择一个选项 )?...在使用 environmentObject 情况下,如何避免创建实例视图被重新计算Q:如何在避免重新计算顶层视图 body 情况下,在不同子树两个子视图之间共享状态( 例如 ObservableObject...阅读 SwiftUI 动画机制[8] 一文,了解更多有关动画内容。自适应高度 SheetQ:如何在 iOS16 呈现与动态内容高度相匹配 Sheet?...只允许打开该内容类型文件,但不能进行编辑。MVVMQ:在 UIKit 时代,MVVM 是一种常见架构,视图显示数据来自一个单独 viewModel 类。...onAppear、init、viewDidLoadQ:在我应用程序,我在 UIHostingController 托管了 SwiftUI 视图,这些视图都处于一个 UITabBarController

12.2K20

Swift 周报 第四十一期

探索在多个时区以多种语言进行活动。 提案 正在审查提案 SE-0412[2] 全局变量严格并发性 提案正在审查。 该提案定义了在产生数据竞争情况下使用全局变量选项。...然而,先前提出一些目标包括尚处于开放式研究阶段问题。在 Swift 6 工作进展同时,语言指导组正在将 Swift 6 剩余变更重点缩小到默认情况下数据竞争安全。...完成 Swift 6 语言模式数据竞争安全所需剩余语言工作将分为两类: 填补严格并发模型所有漏洞,以便静态地或在静态安全无法证明情况下动态地诊断数据竞争。...这有点类似于我们如何在结果构建器创建本地常量,这些常量不会立即被它消耗。 这个想法将扩展 if、guard 和 while 条件列表。...掌握 SwiftUI ContentUnavailableView [10] 摘要: 这篇博客介绍了如何在 SwiftUI 掌握使用 ContentUnavailableView 类型。

20540

SwiftUI 与 Core Data —— 数据定义

:采用模块化开发方式,数据定义、视图、DB 实现均处于各自模块除了用于串联视图外,所有的细节视图均实现了与应用数据流解耦。...对于 SwiftUI 来说,托管对象具备两个非常显著特点:懒加载托管对象所谓托管是指:该对象被托管上下文所创建并持有。仅在需要时候,才从数据库( 或缓存 )中加载所需数据。...在创建 Core Data 模型情况下,完成绝大多数视图和逻辑代码。...如果没有 AnyConvertibleValueObservableObject ,开发者仅能对应用部分视图进行预览( 在创建托管环境情况下 ),而通过 AnyConvertibleValueObservableObject...我们将介绍如何在视图从 Core Data 获取数据操作这一过程实现与托管环境解耦,创建一个可以接受 Mock 数据自定义 FetchRequest 类型。

2.4K40

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

本文将通过一个优化列表视图案例,展现在 SwiftUI 查找问题、解决问题思路,其中也会对 SwiftUI 视图显式标识、@FetchRequest 动态设置、List 运作机制等内容有所涉及...另外如果 id 标识值发生变化,SwiftUI 将丢弃原视图(生命周期终止及重置状态)并重新创建新视图。...虽然我们已经找到了导致进入列表视图卡顿原因,但如何在不影响效率情况下通过 scrollTo 来实现到列表端点滚动呢?...解决方案一 从 iOS 15 开始,SwiftUI 为 List 添加了更多定制选项,尤其是解除了对列表分割线设置屏蔽且添加了官方实现。...升降序切换 对数据进行降序显示且仅允许使用者手工滚动列表。系统邮件、备忘录等应用均采用此种方式。

9K20

SwiftUI WWDC作为开发者我最激动部分

自动支持动态类型、暗模式、本地化和可访问性意味着您第一SwiftUI代码已经是您编写过最强大UI代码。 ?...SwiftUI语法是什么样呢 ---- SwiftUI使用声明性语法,因此您可以简单地声明用户界面应该做什么。例如,您可以编写一个包含文本字段列表,然后描述每个字段对齐方式、字体和颜色。...您代码比以往任何时候都更简单、更易于阅读,从而节省了您时间和维护。 ? 这种声明式风格甚至适用于复杂概念,动画。轻松添加动画到几乎任何控件,并选择一个集合准备使用效果只有几行代码。...当您在设计画布工作时,您编辑所有内容都与相邻编辑代码完全同步。当您键入时,代码作为预览立即可见,并且您对该预览所做任何更改都会立即出现在您代码。...Xcode会立即重新编译您更改,并将其插入到您应用程序运行版本,随时可见和可编辑。 ? 如何去学习SwiftUI ----

2.3K30

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

我们可以通过在 onAppear 以及 onDisappear 对图片显示与否( 变量 show )进行控制( 迫使 SwiftUI 对视图 body 重新求值 ),从而减少因上述原因所增加内存占用...存储协调器缓存( Row cache in coordinator ) 在 Core Data Stack 多层结构,存储协调器( NSPersistentStoreCoordinator )正好处于持久化存储与托管上下文之间...数据多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际上在内存至少保存了三份拷贝: 缓存 托管对象上下文( 托管对象被填充后 ) 显示该图片 SwiftUI...终极优化:私有上下文 + 持有托管对象 思路 在第二轮优化,尽管通过将托管对象转换为惰值解决了一部分内存占用问题,但存在于缓存数据始终还是无法得到有效清除。...在这种情况下,我们可以通过引用类型来创建一个 Holder,通过该持有器,解决释放积极问题。

2.4K40

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

我们可以通过在 onAppear 以及 onDisappear 对图片显示与否( 变量 show )进行控制( 迫使 SwiftUI 对视图 body 重新求值 ),从而减少因上述原因所增加内存占用...存储协调器缓存( Row cache in coordinator ) 在 Core Data Stack 多层结构,存储协调器( NSPersistentStoreCoordinator )正好处于持久化存储与托管上下文之间...数据多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际上在内存至少保存了三份拷贝: 缓存 托管对象上下文( 托管对象被填充后 ) 显示该图片 SwiftUI...终极优化:私有上下文 + 持有托管对象 思路 在第二轮优化,尽管通过将托管对象转换为惰值解决了一部分内存占用问题,但存在于缓存数据始终还是无法得到有效清除。...在这种情况下,我们可以通过引用类型来创建一个 Holder,通过该持有器,解决释放积极问题。

1.2K10

Swift 周报 第十二期

该功能将允许在更多种类情况下管理初始化状态,包括更轻松地处理部分初始化缓冲区。...slice 展开讨论 提议:标准库稳定排序[10] 稳定排序是:在比较相同元素情况下保持输入顺序:例子: var roster = [ Player(first: "Sam", last...本文介绍了几种自定义折线统计图。 如何在 SwiftUI 创建条形图[15] 摘要: 本文展示了如何创建一个垂直条形图,其中 Y 轴表示每个类型值。...如下图: 如何在 SwiftUI 创建水平条形图[16] 摘要: 根据 UI 设计以及交互需求,有时候统计图需要调整 X 和 Y 轴。...-16/ [15]如何在 SwiftUI 创建条形图: https://swdevnotes.com/swift/2021/how-to-create-bar-chart-swiftui/ [16]货拉拉

2.5K10

用 Table 在 SwiftUI 下创建表格

欢迎大家在 Discord 频道[2] 中进行更多地交流 Table 是 SwiftUI 3.0 为 macOS 平台提供表格控件,开发者通过它可以快捷地创建可交互列表格。...在 WWDC 2022 ,Table 被拓展到 iPadOS 平台,让其拥有了更大施展空间。本文将介绍 Table 用法、分析 Table 特点以及如何在其他平台上实现类似的功能。...,更习惯于将数据元素以( Row )形式进行展示( 在一显示数据不同属性内容 ) 在 Table 数据是懒加载视图( TableColumn ) onAppear 和 onDisappear...,SwiftUI 会扩展更多样式到 iPadOS 平台 选择 在 Table 启用选择与 List 方式十分类似: struct TableDemo: View { @State var...启用以该属性为依据排序 TableColumn("货币代码"){ Text($0.currencyCode) } // 启用以该属性为依据排序 // 切勿在绑定排序变量时,使用如下写法。

3.9K30

如何结合 Core Data 和 SwiftUI

使用获取请求从 Core Data 检索信息——我们描述了我们想要内容,应如何对其进行排序以及是否应使用任何过滤器,然后 Core Data 会发回所有匹配数据。...如果我们对 Core Data 说“这不是必须”(您可以在模型编辑完成),它仍然会生成可选 Swift 属性,因为所有 Core Data 关心是属性在保存时具有值——在其他时间它们可以为 nil...更好是,它已经将其添加到 SwiftUI 环境,这就是@FetchRequest属性包装器起作用原因——它使用了环境可用任何托管对象上下文。...这是一个引发函数调用,因为理论上它可能会失败。实际上,我们所做一切都没有失败可能,因此我们可以使用try?来调用它——–我们不在乎捕获错误。 因此,请将最后一添加到按钮操作: try?...更好是,如果您重新启动该应用程序,您会发现学生还在,因为 Core Data 已保存了他们。

11.7K30

何在Xcode下预览含有Core Data元素SwiftUI视图

何在Xcode下预览含有Core Data元素SwiftUI视图 从SwiftUI诞生之日起,预览(Canvas Preview )一直是个让开发者又爱又恨功能。...结合两年来我在SwiftUI中使用Core Data经验和教训,我们将在本文中探讨: •导致SwiftUI预览崩溃部分原因•如何在之后开发避免类似的崩溃出现•如何在Xcode安全可靠地预览含有...通常在这种情况下,我们可能会采用如下方式来尝试解决: •删除模拟器上应用程序重新安装运行•清除编译缓存(Clean Build Folder)•删除项目对应派生数据(Derived Data)•重置模拟器...•在模拟器设备管理器删除模拟器再重新添加 上述手段,多数也都适用于修复某些情况下预览崩溃。...此种情况下,通常我们会在模拟器删除App,重新安装运行即可解决问题。由于预览也是模拟器,在它沙盒中同样可能出现类似的问题。可以使用上文中关于预览模拟器修复方法来尝试解决。

5.1K10

Xcode 11 初体验

SwiftUI、storyboad其中我有两篇博客也介绍到了SwiftUI:SwiftUI - 百代码变十,Swift再创辉煌 和 WWDC - SwiftUI - 初恋般感觉 代码块 代码块也做了调整...将 Assistant、和 Vesion Editor下Autor 选项卡合并为一项,并从主导航移除,向下移到每个编辑面板,组成 Editor Option。...Editor Only:只显示代码编辑器。 Editor and Canvas:代码编辑器和SwiftUI预览视图。 Editor and Assistant:代码编辑器和辅助视图。...对网络和温度模拟 Xcode 11 还加入了对网络环境和设备温度模拟。这两个条件对开发者来说应该陌生,它们也是最难通过常规手段复现场景。...关于Swift UI 更新 其中我有两篇博客也介绍到了 SwiftUI : SwiftUI - 百代码变十,Swift再创辉煌 WWDC - SwiftUI - 初恋般感觉 参考:Apple 官方文档一线搬砖工人

3.1K10

SwiftUI 状态管理系统指南

前言 SwiftUI与苹果之前UI框架区别不仅仅在于如何定义视图和其他UI组件,还在于如何在整个使用它应用程序管理视图层级状态。...标记为StateObject属性与ObservedObject行为完全相同——此外,SwiftUI将确保存储在此类属性任何对象不会因为框架在重新渲染视图时重新创建新实例而被意外释放: struct...(在这种情况下是一个Theme实例),然后SwiftUI会处理其余事情。...——我们可以将其应用于我们层次结构何在其之上视图。...小结 SwiftUI管理状态方式绝对是该框架最有趣方面之一,它可能需要我们稍微重新思考数据在应用传递方式——至少在涉及到将被我们UI直接消费和修改数据时是这样。

5K20

SwiftUI - 百代码变十,Swift再创辉煌

原文作者:Cooci_和谐学习_不急躁 苹果开发者大会 WWDC 2019 在北京时间今天凌晨开幕。...而对于开发者来说,新发布 SwiftUI 可能是最吸引人特性,在 苹果公司软件工程高级副总裁Craig Federighi演示,我们可以轻松地把一百前端代码缩减到十几行。...初体验:左边加大括号21,右边出现一些类似SB东西,布局UI,设置属性貌似都可以完成 // SwiftUI 特点是什么 // SwiftUI 使用声明式语法,所以我们可以简单地声明用户界面的样式。...这种声明式方式甚至允许使用复杂功能,动画(animation)。只需要几行代码,即可添加动画在任何控件上,并且可以使用易于调用特效。...当在设计工具工作时,所编辑内容会立刻反映到代码上,如果从模拟器切换到手机,手机也能立马看到预览效果。 ?

3K40

Ask Apple 2022 与 Core Data 有关问答

在 实时切换 Core Data 云同步状态[4] 一文,我介绍过一种实验方法,在某些情况下可以尝试保留这些数据。但最好还是让应用保持 Core Data 原有的设计模式。...A:通常这些错误是由于未测试架构迁移、错误文件保护等级、磁盘空间不足等原因导致。在这些情况下,应进入恢复步骤以使应用程序再次处于可用状态。另一种方法是向用户显示 UI 存在问题并且需要进行重置。...销毁数据库后,还需要重新在本地创建新数据库。相较于开发者使用文件管理方式删除 SQLite 数据,这种方法更加地安全。...在我设置,存储被保存到一个应用程序组目录,以允许从应用程序和扩展程序访问,所以我认为每个进程都将利用各自容器来访问它。...但是,没有给出明确提示关于如何在不影响 CloudKit 正确性情况下以安全方式清除历史。给出示例是删除所有超过 7 天事务。但是,为什么是 7 天?为什么不是 14 天?

2.8K20
领券