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

如何让SwiftUI NavigationLink在编辑模式下工作?

SwiftUI中的NavigationLink用于在应用程序中实现导航。在编辑模式下,NavigationLink可能无法正常工作,因为默认情况下它的目标视图会在编辑模式下被禁用。要使SwiftUI NavigationLink在编辑模式下工作,可以使用下面的方法:

  1. 创建一个绑定变量来跟踪编辑模式的状态:
代码语言:txt
复制
@State private var isEditing = false
  1. 在NavigationView中设置导航视图并切换编辑模式:
代码语言:txt
复制
NavigationView {
    List {
        // 列表内容
    }
    .navigationBarTitle("Title")
    .navigationBarItems(trailing: Button(action: {
        self.isEditing.toggle()
    }) {
        Text(self.isEditing ? "Done" : "Edit")
    })
    .environment(\.editMode, .constant(self.isEditing ? EditMode.active : EditMode.inactive))
}
  1. 在NavigationLink中使用isActive修饰符并将其绑定到编辑模式的状态变量:
代码语言:txt
复制
NavigationLink(destination: DestinationView(), isActive: $isEditing) {
    EmptyView()
}
  1. 确保目标视图DestinationView()在编辑模式下能够正常工作。

以上步骤将使SwiftUI NavigationLink在编辑模式下工作。编辑模式下,导航链接将根据编辑模式的状态变量来激活或禁用导航。编辑模式下的目标视图将被正确呈现。

关于SwiftUI和NavigationLink的更多信息和示例,请参考腾讯云的官方文档链接:SwiftUI NavigationLink - 腾讯云

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

相关·内容

SwiftUI 4.0 的全新导航系统

详情请参阅 SwiftUI 对 iPad 进行适配[3] NavigationSpiteView 已经解决了上述问题,它现在可以同 NavigationStack 进行完美的合作。...iPad Portrait 显示状态,默认即为此种模式 balanced 显示左侧栏的时候,缩小右侧 Detail 栏的尺寸。...iPad landscape 显示状态,默认即为此种模式 automatic 默认值,根据上下文自动调整外观样式 NavigationTitle 中添加菜单 使用新的 navigationTitle...定制 NavigationLink 样式 之前版本的 SwiftUI 中,NavigationLink 其实一直都是作为一种特殊的 Button 存在的。...相当一部分开发者由于版本适配的原因并不会使用新的 API ,因此,每个人都需要认真考虑如下问题: 如何从新 API 中获得灵感 如何在老版本中运用编程式导航思想 如何新老版本的程序都能享受系统提供的便利

10.3K62

用NavigationViewKit增强SwiftUI的导航视图

2]做前期的准备工作。...有以下几个我不满意的地方: •缺少直接返回根视图的便捷手段•无法通过代码(不通过NavigationLink)跳转到新视图•双栏模式(DoubleColumnNavigationViewStyle)显示风格不统一...•iPad,无法竖屏(Portrait)模式保持双栏状态 因此,在这次开发的准备阶段,我写了一个针对NavigationView的扩展库——NavigationViewKit[3]。...该扩展遵循以下几个原则: •非破坏性任何新添加的功能都不能影响当前SwiftUI提供的原生功能,尤其是不能影响例如Toolbar、NavigationLinkNavigationView中的表现•尽可能便于使用仅需极少的代码便可使用新增功能...•NavigationView的任意视图中通过代码直接跳转到新视图(无需视图中描述NavigationLink)•通过NotificatiionCenter,指定应用程序中的任意NavigationView

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

    本文将介绍可能在视图中产生严重错误的原因,如何避免,以及保证视图对数据变化实时响应的前提下如何为使用者提供更好、更准确的信息。由于本文会涉及大量前文中介绍的技巧和方法,因此最好一并阅读。...SwiftUI 与 Core Data —— 问题[1]SwiftUI 与 Core Data —— 数据定义[2]SwiftUI 与 Core Data —— 数据获取[3]可以 此处[4] 获取演示项目...当开发者模型编辑器中为属性设置了默认值( 取消可选 ), Xcode 自动生成的托管对象类定义代码中仍会将不少类型声明为可选值类型。通过手动修改类型( 将 String?...如果取消标量类型,我们可以模型编辑器生成支持可选值的特定类型( 例如 NSNumber?...但在非常多的情况,开发者并不会使用演示中使用的 NavigationLink 版本,为了对视图拥有更强地控制力,开发者通常会选择具备可编程特性的 NavigationLink 版本。

    3.3K20

    如何使用 SwiftUI 构建 visionOS 应用

    苹果表示,构建应用程序的最佳方式是使用 Swift 和 SwiftUI。下面,我们将学习如何使用 SwiftUI 构建 visionOS 应用程序。...Windows我喜欢 SwiftUI 的一点是它如何自动适应平台。你无需执行任何操作即可在 visionOS 上运行使用 SwiftUI 编写的应用程序。它可以即插即用。...如下图:Volumes你的应用程序可以 visionOS 上的同一场景中并排显示 2D 和 3D 内容。在这种情况,我们可以使用 RealityKit 框架来呈现 3D 内容。...SwiftUI visionOS 上的应用之后,我们了解到 SwiftUI 可以帮助我们轻松构建适应 visionOS 的应用程序。...通过引入沉浸式空间,我们可以将用户带入全新的体验,他们沉浸在应用程序的世界中。

    18521

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

    开始 首先看下主要内容: 本教程中,您将了解如何SwiftUI和Combine中使用VIPER体系结构模式,同时构建一个允许用户创建公路旅行的iOS应用程序,来自翻译。...在此过程中,您还将了解您的iOS项目中的SwiftUI和Combine。 打开启动项目。这包括一些代码,你开始: 当你构建其他视图时,ContentView会启动它们。...由于演示者presenter的工作是用数据填充视图,所以您希望从数据模型中公开旅程trips列表。...TripListView_Previews中修改return,如下所示: return NavigationView { TripListView(presenter: presenter) } 这允许您在预览模式查看导航栏...Considering the Map View 转向细节视图之前,考虑一地图视图。这个widget比其他的更复杂。 除了绘制地理特征,该应用还会覆盖每个点的大头针pins和它们之间的路线。

    17.5K10

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

    元素绑定和自定义滑动操作 接下来,让我们看看如何将完全自定义的滑动操作添加到列表中。...为了演示这种情况,我们 List 中嵌套一个 ForEach (因为 SwiftUI 的中,列表变化一版都是由 ForEach 触发的,而不是由 List 触发的)。...由于每个 article 值 ForEach 闭包中都是可变的,我们可以使用新的 swipeActions 修饰符来实现每个 NavigationLink 项目视图的自定义滑动操作。...在这种情况,用户可以轻松的项目视图上滑动来决定喜不喜欢对应的文章: struct ArticleList: View { @ObservedObject var viewModel: ArticleListViewModel...SwiftUI 中使用,请查看昨天的这篇文章[1],不要错过真正重要的“ Swift 中认识 async/await[2]”WWDC 会议。

    4.9K41

    Ask Apple 2022 与 SwiftUI 有关的问答(

    与 Form 不同的是,List 内置了对编辑模式( Edit Mode )的支持。... SwiftUI 布局 —— 尺寸( 上 )[8] 一文中,对建议尺寸的几种模式都进行了介绍。如何减少主线程的负担Q:如何避免所有操作都被放置主线上?...阅读 The SwiftUI Layout Protocol [11]了解如何创建自定义布局。创建从底部开始的滚动视图Q:我如何实现一个底部对齐的滚动视图, macOS 上会不会有糟糕的性能?...Swiftcord[12] 的代码展示了如何SwiftUI 实现倒置列表。阅读 优化 SwiftUI List 中显示大数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。...Text 与 TextField 在编辑模式的切换Q: editMode 的文档中建议,编辑模式,可以选择将 Text 视图换成 TextField 。

    14.8K30

    如何BYOE云中为企业工作

    云变得有价值和强大的原因之一就是先进技术基础的商品化,这就意味着技术堆栈一定层面以下的一切(具体层面高低因云模式不同而不同)客户眼中就是一个黑盒。...这意味着服务供应商实际应用有需要时拥有访问加密数据的能力。例如,当服务供应商收到来自于执法部门访问数据请求的情况,尽管数据是被加密的,但也不存在任何访问数据的技术障碍。...在此模式,客户而不是CSP成为了密钥的所有者和管理者。从而客户拥有使用现有密钥管理、加密、存储或软硬件组合的能力,与服务供应商一起实现加密功能但限制服务供应商对密钥的访问。...确保云客户身处循环之中是非常有价值的,但是BYOE有其他方法可以客户受益。例如,它可以企业用户寻求变更服务供应商时有所裨益。...企业用户是否安排了工作人员来服务密钥创建?企业用户是否已经适当地设置了其内部访问权限以便只有那些获授权的工作人员才能创建和访问密钥?这些BYOE应用与在内部部署密钥管理应用是同等重要的。

    3.1K70

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

    但是,SwiftUI 中的一些系统控件并没有完全遵循响应式的设计原则,由此某些情况会出现严重的错误,影响用户体验,并使开发者无所适从。...原文发表我的博客 肘子的Swift记事本视图变化在前、状态变化在后 SwiftUI 中,某些可编程控件执行一定的操作时,会先更新视图,待视图变化完成后再修改与其对应的状态。...然而,明显地,强迫用户点击 “Dismiss” 按钮并不是一个好的选择,特别是没有屏蔽手势取消 Sheet 的情况。...通过下面的代码,我们可以用户使用下滑手势来取消 Sheet,同时又不会导致应用锁死。...为了改善 AttributeGraph 的效率并减少其占用空间,SwiftUI 会在一些特定情况对其进行清理和维护(例如通过 CFRunLoopObserverCreate 监听 Runtime 的空闲时机

    707110

    redis 集群模式工作原理能说一么?集群模式,redis 的 key 是如何寻址的?

    redis cluster 介绍 自动将数据进行分片,每个 master 上放一部分数据 提供内置的高可用支持,部分 master 不可用时,还是可以继续工作 redis cluster 架构,...redis 维护集群元数据采用另一个方式, gossip 协议,所有节点都持有一份元数据,不同的节点如果出现了元数据的变更,就不断将元数据发送给其它的节点,其它节点也进行元数据的变更。 ?...meet:某个节点发送 meet 给新加入的节点,新节点加入集群中,然后新节点就会开始与其它节点进行通信。...燃鹅,一致性哈希算法节点太少时,容易因为节点分布不均匀而造成缓存热点的问题。...客户端的 api,可以对指定的数据,他们走同一个 hash slot,通过 hash tag 来实现。 任何一台机器宕机,另外两个节点,不影响的。

    1.6K20

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

    但是,SwiftUI 中的一些系统控件并没有完全遵循响应式的设计原则,由此某些情况会出现严重的错误,影响用户体验,并使开发者无所适从。...然而,明显地,强迫用户点击 “Dismiss” 按钮并不是一个好的选择,特别是没有屏蔽手势取消 Sheet 的情况。...通过下面的代码,我们可以用户使用下滑手势来取消 Sheet,同时又不会导致应用锁死。...为了改善 AttributeGraph 的效率并减少其占用空间,SwiftUI 会在一些特定情况对其进行清理和维护(例如通过 CFRunLoopObserverCreate 监听 Runtime 的空闲时机...不过,即使最新的版本中,一些对 UIKit(AppKit)进行二次包装的控件中,仍有不少细节处理不到位的问题。希望 SwiftUI 开发组能尽早重视这些问题。

    34720

    从用SwiftUI搭建项目说起

    Apple SwiftUI SwiftUI ---- 进入项目搭建先说说我自己对SwiftUI的一个基本的认知: SwiftUI我觉得对iOSer来说最大的是开发UI模式的优化...,标签(TabBar)+ 导航(Na)形式的模式是随处可见的,我们这次的目的是利用SwiftUI搭建这样一个场景构建一个基本的应用,包括登录和数据处理以及iOS常见控件SwiftUI中的一些具体的使用...认识一NavigationView,先看看下面的代码: NavigationView{ NavigationLink.init( destination...: .inline) } 大概解析一上面代码的 NavigationLink,它是用来控制View之间的跳转的: destination:是跳转的目标View,我们在做一些数据传递的时候一般都是在这里说明的...下面的参考文章相信能帮助我们更好的理解一SwiftUI! 参考文章: Apple SwiftUISwiftUI 谈声明式 UI 与类型系统 如何评价 SwiftUI? 项目地址

    4.5K20

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

    的界面跳转,苹果给的 SwiftUI 的使用例子中就是这样写的,当然我们正常的使用中这样写也没啥问题,那我们界面跳转的问题是什么呢?...如果你看了我们 Demo中的代码,你就知道我们是采用 TabView 嵌套 NavigationView 的形式,在这样的模式似乎是存在问题的, TabView+NavigationView 中你利用...NavigationLink 单击没法跳转,只有长按的时候才能跳转,这个问题抛出来,有懂得小伙伴希望能给我说一,这个问题我也一直没有解决!...有一个还得说明一,GeometryReader 改变了它显示内容的方式。 iOS 13.5 中,内容放置方式为 .center。 iOS 14.0 中则为:.topLeading。...3、再提一点关于上面说的滚动视图,UIKit中我们可以用UICollectionView搞定一切,但是SwiftUI中没有这个控件,我建议采用的方式是 ScrollView + HStack + VStack

    12.1K20

    自定义 Button 的外观和交互行为

    相较于 UIKit ,SwiftUI 通过 Button 视图,让开发者以少量的代码便可完成按钮的创建工作。...而 TapGesture 不松开手指的情况,如果移动到可点击区域外,SwiftUI 将不会调用 onEnded 闭包中的操作。...PlainButtonStyle:不对 Button 视图添加任何修饰BorderlessButtonStyle:多数情况的默认样式,未指定文字颜色的情况,将文字修改为强调色BorderedButtonStyle...默认情况,即使单元格的视图中包含了多个按钮,SwiftUI 也只会将 List 的单元格视作一个按钮( 点击后同时调用所有按钮的操作 )。...不再调用其指定的闭包操作,附加手势需 Button 之外添加( 例如下文的 simultaneousGesture 实现 )为按钮添加 Trigger SwiftUI 中,为了判断某个按钮是否被按

    3.7K60

    Swift 周报 第十一期

    前言 本期是 Swift 编辑组自主整理周报的第二期,每个模块还在调整磨合期。各位读者如果有好的提议,欢迎文末留言。...如果苹果在下一代 iPhone 上增加一个常亮显示功能,那么这种电池百分比调整也会很有用,因为用户可以不碰手机的情况就可查看电池状态。... Linux 上,没有这么简单的解决方案。 提议成立 Swift Tooling 工作组[13] 目前有许多工具类领域处于无人管理的状态。应该需要有一个小组来监督、推动和指导工作。...通过 JS 调用 Swift 方法[14] 如何NavigationLink 中的 tag 和 selection 进行转换[15] List(workoutTypes) { workoutType...推荐博文 Swift 社区文章仓库 摘要: 给大家推荐一 Swift社区 的文章仓库,里面整理了公众号中的文章,并进行分类(Swift 进阶、Swift 基础、SwiftUI 进阶、SwiftUI 基础

    1.1K20

    windows7 CMD命令模式如何添加永久路由?

    为了机器重启动后依然有效,使用route 命令添加路由的时候加上 -p 就可以了。 Route 本地 IP 路由表中显示和修改条目。使用不带参数的 route 可以显示帮助。...默认情况,启动 TCP/IP 协议时不会保存添加的路由。与 print 命令一起使用时,则显示永久路由列表。所有其他的命令都忽略此参数。...命令提示符显示帮助。 注释 路由表中 metric 一列的值较大是由于允许 TCP/IP 根据每个 LAN 接口的 IP 地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数造成的。... Windows 95 或 Windows 98 上运行 route 命令时不支持该参数。...只有当“Internet 协议 (TCP/IP)” 网络连接中安装为网络适配器属性的组件时,该命令才可用。

    5K10
    领券