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

在NavigationLink中设置editMode时,SwiftUI EditButton()不起作用

在NavigationLink中设置editMode时,SwiftUI EditButton()不起作用。

首先,NavigationLink是SwiftUI中用于导航到其他视图的控件。editMode是SwiftUI中用于启用或禁用编辑模式的环境变量。而EditButton()是一个特殊的按钮,它可以自动切换编辑模式。

然而,在某些情况下,如果我们在NavigationLink中设置editMode,并尝试在其中使用EditButton(),可能会发现EditButton()不会自动切换编辑模式。

解决这个问题的方法是手动切换编辑模式,而不是依赖EditButton()。可以通过设置NavigationView中的Toolbar来手动添加编辑按钮。以下是一个示例代码:

代码语言:txt
复制
struct ContentView: View {
    @State private var editMode = EditMode.inactive
    
    var body: some View {
        NavigationView {
            List {
                // 列表内容
            }
            .navigationBarTitle("列表")
            .toolbar {
                ToolbarItemGroup(placement: .navigationBarTrailing) {
                    if editMode == .inactive {
                        Button(action: {
                            editMode = .active
                        }) {
                            Text("编辑")
                        }
                    } else {
                        Button(action: {
                            editMode = .inactive
                        }) {
                            Text("完成")
                        }
                    }
                }
            }
            .environment(\.editMode, $editMode)
        }
    }
}

在上述代码中,我们通过@State属性包装editMode,将其作为NavigationView的环境变量进行设置。然后,在NavigationView的Toolbar中,根据editMode的值来手动添加“编辑”或“完成”按钮。点击按钮时,手动切换editMode的值,以启用或禁用编辑模式。

需要注意的是,由于我们要手动控制编辑模式,因此我们还需要根据editMode的值对列表进行相应的更新和处理。

这是一个解决在NavigationLink中设置editMode时EditButton()不起作用的方法。希望对你有帮助!如果你想了解更多关于SwiftUI和腾讯云的相关知识和产品,可以访问腾讯云官方网站(https://cloud.tencent.com/)获取更多信息。

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

相关·内容

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

    SwiftUI 4 ,可以使用 .scrollContentBackground(.hidden) 隐藏列表的默认背景searchableQ:是否有办法.searchable() 修饰器以编程方式设置搜索字段的焦点...但是,此转换仅在文本字段完成编辑才会发生,并且不会阻止输入非数字字符。目前 SwiftUI 没有 API 可以限制用户字段输入的字符。...A: iOS 16.1 ,你可以侧边栏里放一个。navigationDestination,这样侧边栏里的 NavigationLink 就会取代详细栏的根视图。...A:解决办法:保留 TextField ,但当它不能被编辑,有条件地设置 disabled(true),当它可以编辑使用 disabled(false) 。...这是一个多个版本中都出现过的奇怪问题。 SwiftUI 早期版本,当在 iOS 中使用系统中文输入法,很容易触发这种情况。但后期逐步得到了修复。

    14.8K30

    架构之路 (五) —— VIPER架构模式(一)

    在此过程,您还将了解您的iOS项目中的SwiftUI和Combine。 打开启动项目。这包括一些代码,让你开始: 当你构建其他视图,ContentView会启动它们。...当您查看图表,您可以看到数据视图view和实体entities之间流动的完整路径。 SwiftUI有自己独特的做事方式。...然后,TripDetailPresenter,将其内容设置为: import SwiftUI import Combine class TripDetailPresenter: ObservableObject...router处理从一个屏幕到另一个屏幕的转换,设置下一个视图所需的类。 命令式UI范例——换句话说,UIKit——路由router将负责显示视图控制器或激活segue。...当您将其放置NavigationView,该链接将成为一个按钮,将destination推送到导航堆栈上。 content块可以是任何一个SwiftUI视图。

    17.4K10

    用NavigationViewKit增强SwiftUI的导航视图

    由于SwiftUI原生提供的导航手段能力有限,因此之前的版本,NavigationView总是使用的不是那么的顺手。...该扩展遵循以下几个原则: •非破坏性任何新添加的功能都不能影响当前SwiftUI提供的原生功能,尤其是不能影响例如Toolbar、NavigationLinkNavigationView的表现•尽可能便于使用仅需极少的代码便可使用新增功能...下的任意视图通过代码直接返回根视图•NavigationView下的任意视图中通过代码直接跳转到新视图(无需视图中描述NavigationLink)•通过NotificatiionCenter,指定应用程序的任意...视图中支持SwiftUI原生的所有定义,例如toolbar、navigationTitle等。 目前启用转场动画,title和toolbar会在转场动画后才显示,观感稍有不足。日后尝试解决。...[5],我希望iPad版本无论横屏或竖屏,都始终能够保持两栏显示的状态,且左侧栏不可隐藏。

    3.2K20

    如何让 SwiftUI 的列表变得更加灵活

    为了演示这种情况,我们 List 嵌套一个 ForEach (因为 SwiftUI,列表变化一版都是由 ForEach 触发的,而不是由 List 触发的)。...由于每个 article 值 ForEach 闭包中都是可变的,我们可以使用新的 swipeActions 修饰符来实现每个 NavigationLink 项目视图的自定义滑动操作。...中使用,请查看昨天的这篇文章[1],不要错过真正重要的“ Swift 认识 async/await[2]”WWDC 会议。...可定制的分隔符 自从引入 SwiftUI 以来,开发者们有一个非常普遍的要求,提供一个 API ,用于隐藏或以其他自定义实现列表每个 item 之间的默认分隔符。...总结 SwiftUI 正在变得更加灵活和强大,后面我将继续探索更多新推出的 API,并在这里发布分享,欢迎持续关注,为了防止丢失,建议为本号设置星标。

    4.9K41

    sudoers设置pwfeedback缓冲区溢出

    由于存在错误,当在sudoers文件启用pwfeedback选项,用户可能会触发基于堆栈的缓冲区溢出。即使未在sudoers文件列出的用户也可以触发此错误。...有没有影响,除非pwfeedback已启用. 0x02:影响范围 仅当在sudoers启用了pwfeedback选项,Sudo版本1.7.1到1.8.30才会受影响.最初认为它在sudo版本...以下示例,sudoers配置容易受到攻击: ? 以下配置中就未受影响 ? 0x03:编号 CVE-2019-18634 ?...这里,终端终止字符被设置为NUL字符(0x00),因为sudo不是从终端读取的.由于1.8.26引入的EOF处理的变化,这种方法较新版本的sudo并不有效. $ perl -e 'print(("...pwfeedback 使用vi sudo命令sudoers禁用pwfeedback之后,示例sudo -l输出变成: ? 该错误已在sudo 1.8.31修复。

    1.8K21

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

    但是,SwiftUI 的一些系统控件并没有完全遵循响应式的设计原则,由此某些情况下会出现严重的错误,影响用户体验,并使开发者无所适从。...这两个错误包括:通过手势取消 Sheet 后,快速右滑导航容器导致应用锁死;以及滚动返回上层视图导致应用崩溃。...原文发表我的博客 肘子的Swift记事本视图变化在前、状态变化在后 SwiftUI ,某些可编程控件执行一定的操作,会先更新视图,待视图变化完成后再修改与其对应的状态。...由于返回上层视图,状态尚未更新,因此清理 AG (返回动画运行),会破坏应用程序的 AttributeGraph 完整性,从而导致应用程序死锁或崩溃。...随着版本的提高,SwiftUI 的功能也确实得到了相当程度的增加。不过,即使最新的版本一些对 UIKit(AppKit)进行二次包装的控件,仍有不少细节处理不到位的问题。

    658110

    SwiftUI 与 Core Data —— 安全地响应数据

    SwiftUI 与 Core Data —— 问题[1]SwiftUI 与 Core Data —— 数据定义[2]SwiftUI 与 Core Data —— 数据获取[3]可以 此处[4] 获取演示项目...例如,当你创建一个带有字符串属性的新对象,初始值( 没有默认值的情况下 )是 nil,这在对象被验证之前( 通常在 save )是没有问题的。...当开发者模型编辑器为属性设置了默认值( 取消可选 ), Xcode 自动生成的托管对象类定义代码仍会将不少类型声明为可选值类型。通过手动修改类型( 将 String?...可能开发者会有这样的疑问,假如某个实体的属性模型中被定义为可选,且托管对象的类型声明也为可选值类型( 例如上方的 timestamp 属性 ),那么如果在可以保证 save 一定有值的情况下,是否可以使用中使用...将操作方法的参数设置为值类型,将迫使开发者在对数据进行操作( 添加、删除、更改等 )首先需要确认对应数据( 数据库 )是否存在。

    3.3K20

    如何使用 SwiftUI 构建 visionOS 应用

    如下图:Volumes你的应用程序可以 visionOS 上的同一场景并排显示 2D 和 3D 内容。在这种情况下,我们可以使用 RealityKit 框架来呈现 3D 内容。...3D 内容,你可以使用 windowStyle 修饰符来启用内容的体积显示。...体积样式允许你的内容第三维增长,以匹配模型的大小。对于更复杂的 3D 场景,我们可以使用 RealityView 并填充它以 3D 内容。...SwiftUI visionOS 上的应用之后,我们了解到 SwiftUI 可以帮助我们轻松构建适应 visionOS 的应用程序。...不仅如此,SwiftUI 还提供了许多方便的工具和修饰符,例如 windowStyle 修饰符,可用于应用程序呈现 3D 内容,并使内容根据模型的大小自动适应。

    17321

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

    但是,SwiftUI 的一些系统控件并没有完全遵循响应式的设计原则,由此某些情况下会出现严重的错误,影响用户体验,并使开发者无所适从。...这两个错误包括:通过手势取消 Sheet 后,快速右滑导航容器导致应用锁死;以及滚动返回上层视图导致应用崩溃。...视图变化在前、状态变化在后 SwiftUI ,某些可编程控件执行一定的操作,会先更新视图,待视图变化完成后再修改与其对应的状态。这些控件基本上都是对 UIkit(AppKit)的二次包装。...由于返回上层视图,状态尚未更新,因此清理 AG (返回动画运行),会破坏应用程序的 AttributeGraph 完整性,从而导致应用程序死锁或崩溃。...随着版本的提高,SwiftUI 的功能也确实得到了相当程度的增加。不过,即使最新的版本一些对 UIKit(AppKit)进行二次包装的控件,仍有不少细节处理不到位的问题。

    31620

    SwiftUI WWDC 24 之后的新变化

    每年,SwiftUI 都会通过引入更多功能来赶上 UIKit。今年也不例外。让我们深入了解 SwiftUI 框架引入的新功能。...英雄动画SwiftUI 引入了 matchedTransitionSource 和 navigationTransition,我们可以在任何 NavigationLink 实例配对使用。...NavigationStack 内从一个视图导航到另一个视图,使用相同的标识符和命名空间创建平滑的过渡。...extension EnvironmentValues { @Entry var itemsPerPage: Int = 10}预览新的 Previewable 宏允许我们预览引入状态,而无需将其包装到额外的包装视图中...框架的下一版本包括许多新 API,如窗口推送、TextField 和 TextEditor 视图中的文本选择观察、搜索焦点监控、自定义文本渲染、新的 MeshGradient 类型等等,我无法一篇文章涵盖所有内容

    2900

    从用SwiftUI搭建项目说起

    ,针对一个需求或者是一个新的项目我们基本上都是从写UI开始的,根据设计图再编造一些假数据来做,只是写的过程它的及时效果也都是脑补!...从 SwiftUI 谈声明式 UI 与类型系统 跨平台: 最新的swiftUI 5.1,我们创建一个MultilPlatform App有了下面这些区别: ·Before func...,标签(TabBar)+ 导航(Na)形式的模式是随处可见的,我们这次的目的是利用SwiftUI搭建这样一个场景构建一个基本的应用,包括登录和数据处理以及iOS常见控件SwiftUI的一些具体的使用...View ---- 我自己觉得,要想从UIKit转换到SwiftUI,需要我们最先转变的概念就是 Controller -> View 的一个改变,使用SiwftUI写UI的过程,基本上是不在需要我们向...UIKit我们的导航、标签都是通过控制器来管理,但是SwiftUI他们分别是通过NavigationView+TabView管理的,我们得认识上有一个基本的转变,从Controller到View

    4.5K20

    @StateObject 研究

    SwiftUI 1.0代,如果想将引用类型作为source of truth,通常的方法是使用@EnvironmentObject或者 @ObservedObject。...或者当前View的父辈、祖先View上创建的,所以其生命周期必然不短于当前View,因此使用并不会发生由于生命周期不可预测而导致的异常。...为了能够让开发者更好的掌控代码,同时也保持对于上一版本良好的兼容性,苹果在SwiftUI2.0添加了@StateObject。顾名思义,它是@State的引用类型版本。...1,当进点击+1按钮,无论是@StateObject或是@ObservedObject其都表现出一致的状态,两个View都可以正常的显示当前按钮的点击次数,不过当点击刷新按钮,CountViewState...在下一篇文章《SwiftUI2.0 —— 100% SwiftUI app》,我们来进一步探讨。

    1.1K40

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

    本文将通过一个优化列表视图的案例,展现在 SwiftUI 查找问题、解决问题的思路,其中也会对 SwiftUI 视图的显式标识、@FetchRequest 的动态设置、List 的运作机制等内容有所涉及...也就是当显示主界面菜单,列表视图已经完成了实例的创建(可以通过 ListEachRowHasID 的构造函数添加打印命令得以证明),因此也不应是实例化列表视图导致的延迟。... SwiftUI 视图的生命周期研究[3] 一文,我对 List 如何对子视图的显示进行优化做了一定的介绍。...标识( Identity )是 SwiftUI 程序的多次更新识别相同或不同元素的手段,是 SwiftUI 理解你 app 的关键。... SwiftUI 为视图设置显式标识目前有两种方式: ForEach 的构造方法中指定 由于 ForEach 的视图数量是动态的且是在运行时生成的,因此需要在 ForEach 的构造方法中指定可用来标识子视图的

    9.1K20

    SwiftUI-数据流

    数据处理的基本原则 Data Access as a Dependency: SwiftUI 数据一旦被使用就会成为视图的依赖,也就是说当数据发生变化了,视图展示也会跟随变化,不会像 MVC 模式下那样要不停的同步数据和视图之间的状态变化...A Single Source Of Truth: 保持单一数据源, SwiftUI 不同视图之间如果要访问同样的数据,不需要各自持有数据,直接共用一个数据源即可,这样做的好处是无需手动处理视图和数据的同步...不过值类型传递时会发生复制操作,所以给传递后的值类型即使属性更新了也不会触发最初的传过来的值类型的重新赋值,所以界面并不会刷新,此时需要用@Binding,因为它可以将值类型转为引用类型,这样传递...ObservableObject 应用开发过程,很多数据其实并不是 View 内部产生的,这些数据有可能是一些本地存储的数据,也有可能是网络请求的数据,这些数据默认是与 SwiftUI 没有依赖关系的...最终再次呈现给用户,等待下次界面操作 注意 SwiftUI ,开发者只需要构建一个视图可依赖的数据源,保持数据的单向有序流转即可,其他数据和视图的状态同步问题 SwiftUI 帮你管理,所以 ViewController

    10.1K20

    老人新兵 —— 一款 iOS APP 的开发手记

    SwiftUI、Combine 以及 Core Data 的新特性对我很有吸引力兴趣驱动,没有商业压力和历史包袱,因此可直接采用尚未成熟或前景不明的技术经过一番了解后,最终选择 SwiftUI +...模拟器 NavigationLink 只能使用一次,第二次点会失效,实机没有问题。很难实现直接返回到根视图,通过 dissmiss 只能返回到上层视图。...我的 app 中有几处 Sheet 弹出的响应就比较慢( 将 view 移出 sheet,使用 NavigationLink 调用显示就很好 ),尤其是退出的响应更慢。...@FetchRequest 对数据的动态管理非常好, SwiftUI 数据的任何变化都能动态体现。...@FetchRequest 目前只能在 init 通过参数动态设置一次( 无法动态修改 ),如果需要显示不同的谓词或排序结果,只能通过上层视图重新设置

    2.5K40
    领券