NavigationLink 内的 SwiftUI 按钮

2024-02-24

我有一个列表项的视图,它显示有关嵌入到 navigationLink 中的任务的一些基本信息。

我想使用 navigationLink 中的按钮进行切换task.isComplete没有进行任何导航。

到目前为止,这是我的代码:

var body: some View {
        NavigationLink(destination: TaskDetailView()) {
            HStack {
                RoundedRectangle(cornerRadius: 5)
                    .frame(width: 15)
                    .foregroundColor(getColor(task: task))
                VStack {
                    Text(task.name!)
                        .font(.headline)
                    Spacer()
                }
                Spacer()
                Button(action: {
                    self.task.isComplete.toggle()
                }) {
                    if task.isComplete == true {
                        Image(systemName: "checkmark.circle.fill")
                    } else {
                        Image(systemName: "circle")
                    }
                }
                .foregroundColor(getColor(task: task))
                .font(.system(size: 22))
            }
        }
    }

目前,不会执行按钮操作,因为只要按下按钮,navigationLink 就会将您带到目标视图。我尝试将按钮放在 navigationLink 之外 - 这允许操作发生,但导航仍然发生。

有没有办法让这成为可能?

Thanks.


要达到您想要的结果,您必须使用其他内容与 .onTapGesture 处理程序而不是 NavigationLink 上的按钮。下面的例子对我有用。

尝试替换:

Button(action: {
    self.task.isComplete.toggle()
}) {
    if task.isComplete == true {
        Image(systemName: "checkmark.circle.fill")
    } else {
        Image(systemName: "circle")
    }
}

with:

Image(systemName: task.isComplete ? "checkmark.circle.fill" : "circle")
    .onTapGesture { self.task.isComplete.toggle() }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NavigationLink 内的 SwiftUI 按钮 的相关文章

  • 如何在 SwiftUI 中对 Imagepicker 进行两次单独的调用?

    我希望用户能够将两个单独的图像上传到同一视图的两个不同部分 我能够让第一张图像在顶部正确显示 但每当用户添加第二个图像时 顶部的图像会再次更新 而不是底部的图像 截屏 https i stack imgur com IOi90 png 下面
  • SwiftUI |选择器 - 更改选定行的颜色

    我想更改所选行的颜色 正如您所看到的 默认情况下它具有浅灰色 我不知道该怎么做 因为我根本找不到访问这一行的方法 有什么办法可以做到这一点吗 演示代码 struct ContentView View var data Array 0 20
  • Swiftui Binding 操作尝试每帧更新多次

    我在调试文本字段输入的问题时遇到问题 信息 MacOs 蒙特利版本 12 0 Beta 21A5284e Xcode 13 0 beta 3 13A5192j 实体手机IOS 15 0 19A297e 问题说明 当我尝试输入绑定到视图模型的
  • 有没有 SwiftUI 方法来制作文本上标或下标?

    我知道可以像这样应用偏移量Text TM offset x 0 y 7 但是有没有不同或更好的方法来在 SwiftUI 中创建一些上标或下标文本 这是使用的通用方法 baselineOffset Text Company font call
  • SwiftUI - 将数据传递到不同的视图

    我正在开发一个有 4 个不同视图的应用程序 主视图 内容视图 an AddView an EditView 以及一个分离的DataView在一个类中 我通过一个传递所有数据可观察对象到其他意见 在主视图中我有一个项目列表 在里面AddVie
  • SwiftUI如何用TabView隐藏导航栏

    我正在使用 SwiftUITabView inside NavigationView 但我就是无法在iOS 13 0模拟器中隐藏导航栏 这是代码 import SwiftUI struct TestView View var body so
  • 覆盖菜单按钮标签文本颜色 (MacOS SwiftUI)

    我可以覆盖菜单按钮标签的 设置后变暗 颜色吗 下面的 GIF 显示了一个清晰明亮的菜单项 在新选择后会变暗 此系统样式的默认行为 例如 在触控板首选项中 但它不符合可访问性标准 例如 WCAG 要求活动控件中该字体大小的亮度对比度 gt 4
  • 不符合 BindableObject 协议 - Xcode 11 Beta 4

    尝试一下那里的例子 找到一个项目 其中有一个类bindableobject并且它没有给出任何错误 现在 Xcode 11 beta 4 已经发布 我收到错误 类型 UserSettings 不符合协议 BindableObject 它有一个
  • SwiftUI - 正确使用 @available() 和 #available

    我在下面的代码中遗漏了什么吗 此应用程序在 iOS 15 设备上构建 macOS Monterey b5 Xcode 13 b5 并完美执行 但在 iOS 14 7 设备上导致 SIGABRT import SwiftUI struct C
  • 如何在 SwiftUI 中管理 AVPlayer 状态

    我有 SwiftUI 中的 URL 列表 当我点击某个项目时 我会呈现一个全屏视频播放器 我有一个 EnvironmentObject它处理一些查看器选项 例如 是否显示时间码 我还有一个显示和隐藏时间码的切换开关 我只在本例中包含了该切换
  • StateObject 作为 init() 中另一个对象的参数

    我试图将 StateObject 用户传递给authenticationHelper 但我不能 因为 IDE 说 在初始化所有存储的属性之前使用 self 即使它是在结构体的开头初始化的 我考虑过将 user 的初始化移至 init 但同样
  • 如何在 TextField (SwiftUI) 上添加底线

    I use Rectangle 在 TextField SwiftUI 上添加底部边框 但我想用protocol TextFieldStyle对于 TextField 样式的底线 如 RoundedBorderTextFieldStyle
  • SwiftUI TabbedView 仅显示第一个选项卡的内容

    我正在尝试建立一个TabbedView使用以下简单代码 TabbedView Text Hello world tabItemLabel Text Hello Text Foo bar tabItemLabel Text Foo 运行时 两
  • 如何在 macOS 上的 SwiftUI 中设置拖动图像

    我正在尝试更改 GridView 的默认拖放预览图像 该图像似乎包含网格中的所有可见项目 据我了解 我应该能够设置NSItemProvider previewImageHandler块来自定义所使用的图像 我似乎找不到任何关于返回自定义图像
  • SwiftUI 转义闭包捕获变异的“self”参数

    我有一个可以通过两种方式打开的视图 一个包含提供给它的数据 另一个包含对 Firestore 文档的文档引用 我创建了两个构造函数 在第一个构造函数中我提供数据 在另一个构造函数中我提供文档参考 然后我使用此引用进行网络调用 但出现错误 E
  • SwiftUI ScrollView 只向一个方向滚动

    尝试使用视图作为列表行样式来创建自定义列表 以摆脱默认情况下列表中难看的分隔线 但是 一旦我将 ZStack 行放入滚动视图中 滚动视图就会在两个方向上滚动 而不仅仅是垂直滚动 这是内容视图 NavigationView ScrollVie
  • HStack 中的 SwiftUI EditButton 未激活编辑模式

    作为更大表单的一部分 我希望有一个带有列表的部分 其条目可以重新排序 在整个视图中 应该只能编辑该特定列表 而不能编辑其他内容 因此我希望将编辑按钮放在列表附近 如果我只是将 EditButton 设置为节标题 则可以对列表项重新排序 但无
  • 如何使用 SwiftUI 获取多个屏幕上的键盘高度并移动按钮

    以下代码获取键盘显示时的键盘高度 并将按钮移动键盘高度 在转换源 ContentView 和转换目标 SecibdContentView 处以相同的方式执行此移动 但按钮在转换目标处不移动 如何使按钮在多个屏幕上移动相同 import Sw
  • 具有多个 ViewBuilder 的 SwiftUI 视图

    我有一个视图 表示单元格中的一行 如下所示 这很有效 但三个水平元素 图像 标题 副标题 图像 被硬编码为其各自的类型 我想要一个通用的ThreeItemView这可能需要 3Views任何类型并如图所示排列它们 这将允许我将相同的容器布局
  • 由枚举驱动的 SwiftUI 选择器:值未更新

    根据苹果公司的相关文档SwiftUI 中使用 Enum 的选取器 https developer apple com documentation swiftui picker 如果枚举符合Identifiable协议除了CaseIterab

随机推荐

  • 可变长度表中的内存分配

    假设我在中定义了以下可变长度表WORKING STORAGE 01 SOAP RECORD 05 SOAP INPUT PIC X 8 VALUE SPACES 05 SOAP STATUS PIC 9 VALUE ZERO 05 SOAP
  • 将 Spongycastle 与 Proguard 一起使用

    我一直在努力使用 Proguard 来让 Spongycastle 正常工作 大多数时候 问题出现在我导出签名的 APK 时 要么出现错误 要么应用程序在启动前崩溃 因此 我设法收集信息以获得有效的混淆器配置 optimizationpas
  • 如何通过 Emacs 23.1 内置集成设置 SVN 密码?

    我正在 CentOS 6 2 上做一个项目 使用发行版提供的 Emacs 23 1 1 和使用 svnserver 的 subversion 我无法在任何地方找到如何设置存储库访问密码 关于此还有另一个问题 SVN for Emacs 如何
  • View 中对 ViewModel(即其 DataContext)的引用是否对 MVVM 模式有害?

    让我们说一个ViewModel发布一个Event and a View它正在使用该虚拟机作为其DataContext订阅该Event通过强制转换来获取对 VM 的引用DataContext到虚拟机实例 vm DataContext as M
  • pandas 堆叠数据框

    我有一个数据框 看起来像 sensorId 1 2 3 9b f3 55 19 00 4b 12 00 1 7 8 bf f3 55 19 00 4b 12 00 6 5 9 da f3 55 19 00 4b 12 00 1 1 2 我想
  • Neo4j 数据库大小增长

    我使用 neo4j 3 0 1 社区 并且我有几 GB 的数据 这些数据很快就会过时 比如每天 2 3 次 我必须先创建新数据 然后删除旧数据 因此在任何时间点都有一些数据可用 问题是 Neo4j 不使用已删除节点 关系中的空间 我使用 M
  • matplotlib 中的十六进制 X 轴

    是否可以以某种方式在 matplotlib 中以十六进制表示法打印 X 轴上的值 在我的图中 X 轴代表内存地址 您可以在轴上设置格式化程序 例如FormatStrFormatter http matplotlib org api tick
  • 指数超出范围。必须为非负数且小于集合的大小

    我在跟踪我的数据密钥时收到此错误 我不确定为什么我的数据密钥索引超出范围 这是我的代码 protected void GridView1 RowDataBound object sender GridViewRowEventArgs e v
  • Bootstrap 轮播中的 Highcharts 内容不会根据轮播自动调整大小

    我有一个高图表作为引导程序轮播中第二个项目的内容 div 内容 如果它位于第一个轮播幻灯片 项目上 它的大小调整得很好 但是 如果高图表位于第二张幻灯片上 则滑入时不会调整大小 如果不是第一个可见的轮播幻灯片 项目 如何自动调整轮播内容的大
  • window.openDatabase() 和 window.sqlitePlugin.openDatabase() 函数之间的区别?

    使用 Cordova 版本 3 x 和 Android 版本 2 x 至 4 x 我想知道 我的理解是否正确 所有 Android 设备默认都有一个用于创建 sqlite 数据库的 sqlite 程序 接口 上述两个数据库函数调用是否在设备
  • 如何使用 Android Google 地图应用程序的双击标记打开新活动?

    我正在尝试使用onMarkerClick 它允许用户在单击标记时查看新的活动 窗口 如果想要更改行为以便打开新活动 但仅当我双击标记时 我该怎么做 这是我的代码 public class MapsActivity extends Fragm
  • WebDriverWait 中的逻辑运算符预期条件

    我正在使用 Python Selenium 提交表单 然后让 Web 驱动程序通过使用类 id 的预期条件等待下一页加载 我的问题是 有两个页面可以显示 但它们不共享原始页面中不存在的唯一元素 我可以找到 一页有一个独特的类别是mobile
  • 查找字符出现 N 次的行

    我有一个 txt 文件 我试图将其作为平面文件导入 SQL2008 如下所示 123456 some text 543210 some more text 111223 other text etc 该文件有超过 300 000 行 文本很
  • GAE Python 开发服务器升级到 2.7 后间歇性崩溃

    我最近将我的 GAE Python 应用程序升级到了 Python 2 7 从那时起 我定期在开发服务器上收到以下错误 并且开发服务器提供空白页面 Traceback most recent call last File Applicati
  • 用模式替换 R 中的字符串并替换两个向量

    假设我有两个向量 如下所示 a lt c this is test b lt c that was boy 我还有一个字符串变量 如下所示 string lt this is a story about a test 我想替换字符串中的值
  • 字形和文本之间的间距?

    我正在尝试添加字形图标作为电子邮件地址链接的一部分 图标显示 但图标和电子邮件地址文本之间没有间距 我希望超链接包含图标和文本 包括空格 实现这一目标的最佳方法是什么 a href title Some Email span class g
  • terraform 和 aurora postgresql 的存储类型错误

    我目前正在借助 Terraform 在 AWS 中部署 Aurora postgres 实例 这里是我的报关表 resource aws db instance postgreDatabase name validName storage
  • 以编程方式将类序列化为 xsd

    有没有办法以编程方式从 C NET 类创建 XSD 我想将对象序列化为带有类型信息的 xsd 或 xml 是的 看着XsdDataContractExporter MSDN 有一个完整的例子在这里 http msdn microsoft c
  • SocketOutputStream的线程安全

    我知道 java 套接字的线程安全性已经在 stackoverflow 上的几个线程中进行了讨论 但我一直无法找到这个问题的明确答案 实际上 让多个线程同时写入同一个线程是否安全SocketOutputStream 或者是否存在从一个线程发
  • NavigationLink 内的 SwiftUI 按钮

    我有一个列表项的视图 它显示有关嵌入到 navigationLink 中的任务的一些基本信息 我想使用 navigationLink 中的按钮进行切换task isComplete没有进行任何导航 到目前为止 这是我的代码 var body