SwiftUI - NavigationLink 不适用于按钮

2023-12-02

我正在制作一个应用程序,在其中输入两个数字,并希望在单击按钮时在第二个屏幕中显示数字的相加结果。我可以在控制台中打印结果,但不幸的是,按钮周围的导航链接似乎不起作用。如果我将 NavigationLink 放在按钮标签周围而不是整个按钮周围,那么它会转到第二个屏幕,但按钮操作停止工作。这是我的代码:

import SwiftUI

struct ContentView: View {
    @State private var number1 : String = ""
    @State private var number2: String = ""
    @State private var isTapped:Bool = false
    @State var sum : Double = 0
    var body: some View {
        
        NavigationView {
            VStack{
                TextField("Type first number", text: $number1)
                    .keyboardType(.numberPad).padding()
                    .textFieldStyle(RoundedBorderTextFieldStyle())
                    .background(Color.gray).border(Color.blue,width:5)
                
                TextField("Type second number", text: $number2)
                    .keyboardType(.numberPad).padding()
                    .textFieldStyle(RoundedBorderTextFieldStyle())
                    .background(Color.gray).border(Color.blue,width:5)
                
                
                //this Navigationlink is not working
                NavigationLink(destination: Text("\(self.sum)")) {
                    Button(action: {
                        print("I am here in the action")
                        self.isTapped.toggle()
                        UIApplication.shared.endEditing()
                        if let num1 = Double(self.number1), let num2 = Double(self.number2){
                            print("I am here")
                            self.sum = num1 + num2
                            print("\(self.sum)")
                        }
                    }) {
                        //If I put the Navigationlink here, button action stop working.
                        Text("Add Two Numbers")
                            .padding()
                            .foregroundColor(.blue)
                            .background( isTapped ? Color.orange : Color.gray)
                            .font(.title)
                            .border(Color.blue, width: 5)
                            .shadow(radius: 10)
                        
                    }
                    
                }
                
            }
            
        }
        
    }
}
extension UIApplication {
    func endEditing() {
        sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

有什么线索吗?感谢您的好奇心。


NavigationLink实际上,它本身就是一个按钮,所以你引入了某种冲突。相反,您可以仅将链接与其他点击手势处理程序一起使用,例如

NavigationLink(destination: Text("\(self.sum)")) {
    Text("Add Two Numbers")
        .padding()
        .foregroundColor(.blue)
        .background(isTapped ? Color.orange : Color.gray)
        .font(.title)
        .border(Color.blue, width: 5)
        .shadow(radius: 10)
    }
    .simultaneousGesture(TapGesture().onEnded{
        print("I am here in the action")
        self.isTapped.toggle()
        UIApplication.shared.endEditing()
        if let num1 = Double(self.number1), let num2 = Double(self.number2){
            print("I am here")
            self.sum = num1 + num2
            print("\(self.sum)")
        }
    })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwiftUI - NavigationLink 不适用于按钮 的相关文章

  • SwiftUI 文本意外填充底部和顶部

    我需要精确控制文本所占据的区域 我创建了最基本的程序 显示意外的顶部和底部间距被添加到文本中 这些额外的填充从哪里来 如何摆脱它 main struct myApp App init var body some Scene WindowGr
  • SwiftUI - 正确使用 @available() 和 #available

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

    我有一个基于某种状态的 swiftUI 动画 withAnimation linear duration 0 1 self someState newState 上述动画完成时是否会触发任何回调 如果有关于如何在 SwiftUI 中使用完成
  • Swift TTS,无音频输出

    我尝试在我的应用程序 TTS 中集成 但如果单击按钮 则没有音频输出 这是按钮代码 struct VocabDetailView View var body some View HStack Button Play readOut text
  • textFieldDidChangeSelection:在视图更新期间修改状态,这将导致未定义的行为

    这是我的代码 struct CustomTextField UIViewRepresentable var placeholder String Binding var text String func makeUIView context
  • Swiftui,按钮网格视图

    我在这里检查了有关网格视图的几个问题 但我的问题有点不同 我想为按钮创建一个网格视图 以便每个按钮按下时导航到不同的视图 所以它看起来像这样 这是网格按钮视图 https i stack imgur com Q6WWB jpg 所以我在这里
  • SwiftUI - 获取孩子的大小?

    有什么方法可以获取 SwiftUI 中子视图的大小吗 我基本上希望做 UIKit 相当于 self child frame origin x self child intrinsicContentSize width 2 0 我认为 Geo
  • 理解 UIViewRepresentable

    斯威夫特 5 0 iOS 13 尝试了解 UIViewRepresentable 的工作原理 并将这个简单的示例放在一起 几乎就这样了 但也许完全是无稽之谈 是的 我知道 SwiftUI 中已经有一个 tapGesture 这只是一个测试
  • SwiftUI ScrollView 只向一个方向滚动

    尝试使用视图作为列表行样式来创建自定义列表 以摆脱默认情况下列表中难看的分隔线 但是 一旦我将 ZStack 行放入滚动视图中 滚动视图就会在两个方向上滚动 而不仅仅是垂直滚动 这是内容视图 NavigationView ScrollVie
  • 如何在 SwiftUI 中使用带条件检查的按钮进行导航

    Since 导航按钮不再可用 我如何检查条件导航链接为了导航到另一个视图 NavigationLink destination Dashboard userName self userId password self password is
  • .send() 和 .sink() 似乎不再适用于 Xcode 11 Beta 5 中的 PassthroughSubject

    在下面的代码中 当按下按钮时 Test 应该打印在控制台中 但事实并非如此 该事件不是通过发布者发送的 知道 Xcode 11 Beta 5 中的 PassthroughSubject 发生了什么吗 在 Xcode 11 Beta 4 中效
  • 如何检测 swiftui 中是否存在键盘

    我想知道按下按钮时键盘是否存在 我该怎么做 我已经尝试过 但我没有任何运气 谢谢 使用该协议 KeyboardReadable 你可以符合任何View并从中获取键盘更新 KeyboardReadable协议 import Combine i
  • 如何在 swiftUI (macOS) 中检测按键按下和释放

    除了标题之外没什么可说的 我希望能够在按下按键和释放按键时 在 macOS 上 在 swiftUI 视图中执行操作 在 swiftUI 中是否有任何好的方法可以做到这一点 如果没有 有什么解决方法吗 不幸的是 键盘事件处理是其中一个令人痛苦
  • 调用 SwiftUI 中位置 #11、#12 处的额外参数 [重复]

    这个问题在这里已经有答案了 我在 SwiftUI 中的切换开关上不断收到 调用中位置 11 12 处有额外参数 错误 我见过其他人有 调用中的额外参数 错误 但答案似乎没有帮助 另外 我的错误是 位置 11 12 我还没有看到其他人发生这种
  • 使用 Swift(使用 SwiftJWT)和 REST API 连接到 Apple Store Connect - 失败并出现 401

    我正在尝试通过他们的 REST API 连接到 Apple Store Connect 虽然这在几天前有效 但我无法弄清楚为什么它停止工作 现在我无法通过身份验证 即我发出的服务器响应的每个请求都是 401 我是否遗漏了什么 我做什么 生成
  • 在 WidgetKit 中每分钟更新时间文本标签

    是否可以在小部件中创建显示当前时间并实时更新的文本标签 尝试创建时钟小部件 但小部件每 5 分钟仅更新 1 次 创建时间表没有帮助 使小部件保持最新 不适用于当前时间 仅适用于计时器等 一个可能的解决方案是使用time日期样式 A styl
  • SwiftUI - 使用“ObservableObject”和@EnvironmentObject 有条件地显示视图

    我想在我的应用程序中有条件地显示不同的视图 如果某个布尔值为 true 则将显示一个视图 如果为 false 将显示不同的视图 该布尔值位于 ObservableObject 类中 并根据将要显示的视图之一进行更改 PracticeStat
  • SwiftUI 关闭多个模态表

    我在用 sheet isPresented self showModal 在我的根视图中呈现一个模式 在模态中 我正在使用NavigationView引导用户浏览各个页面 对于用户配置文件构建器 在导航堆栈的最后一页中 我正在使用 Envi
  • 如何将一个 SwiftUI View 作为变量传递给另一个 View 结构

    我正在实施一个very自定义 NavigationLink 称为MenuItem并希望在整个项目中重用它 它是一个符合以下条件的结构体View并实施var body some View其中包含一个NavigationLink 我需要以某种方
  • 如何在 SwiftUI 中延迟动画?

    我想为两个文本字段设置动画 第二个字段有延迟 但它不起作用 没有延迟 它们同时从位置 100 动画到 0 这是代码 State private var offset CGFloat 100 State private var offset2

随机推荐

  • 列表视图CSS不渲染jquery mobile

    我正在使用jquery mobile phone gear 和backbone js 制作一个应用程序 在此 我动态创建页面并将其附加到 html 页面的 body 元素 我还为特定页面动态创建列表视图 然而 列表视图仅显示 li 标签的普
  • 基于事件列创建配对数量的数据框

    我有一个数据框 其中包含一列 该列指示事件 ID 还有另一列指示该事件中使用的产品 每个产品只能在一个活动中使用一次 并且每个活动至少包含一个产品 我想知道每种产品与其他产品一起使用了多少次 一些示例数据如下 set seed 1 even
  • 使用 JQuery 切换手风琴

    我收到了一个手风琴 它不会打开和关闭每个选项卡 它仅在以下情况下关闭选项卡another标题已选择 但我希望用户也能够在单击时关闭它 我不知道如何编辑这个 Jquery 来允许这种情况发生 jQuery ul gdl accordion l
  • 正则表达式不允许连续出现超过 1 个破折号

    我怎样才能禁止 超过1个连续 例如ab c 在单词 不允许 后面 例如abc 在单词开头不允许 例如 abc A Za z0 9 是我到目前为止所拥有的 A Za z0 9
  • 为什么 Mac ABI 要求 x86-32 进行 16 字节堆栈对齐?

    我可以理解旧的 PPC RISC 系统甚至 x86 64 的这种要求 但是对于旧的久经考验的 x86 呢 在这种情况下 堆栈只需在 4 字节边界上对齐 是的 一些 MMX SSE 指令需要 16 字节对齐 但如果这是被调用方的要求 那么它应
  • Grunt concat 不同域或不同服务器上的文件

    编辑工作版本和说明 我想使用 grunt 和 grunt concat 以及类似的东西将来自不同服务器的文件连接到我的目标文件夹中 concat options separator dist src dev staticcontent co
  • CakePHP 3 - 使用可重用验证器

    在 CakePHP 3 文档中 有一个关于可重用验证器的部分 https book cakephp org 3 0 en core libraries validation html creating reusable validators
  • 在C#中使用TextureBrush从不同高度开始平铺图像时出现问题

    我正在尝试使用TextureBrush 将图像 16x16 平铺在尺寸为width 1000 height 16 的矩形区域上以获得类似UI 的条带 Rectangle myIconDrawingRectangle new Rectangl
  • 为什么右值引用被通用引用变成左值引用[重复]

    这个问题在这里已经有答案了 我想当通用引用参数与右值引用参数匹配时 会返回右值引用参数 然而 我的测试表明 右值引用被通用引用函数模板变成了左值引用 为什么会这样呢 include
  • NSDateFormatter 的时间错误

    我有一个字符串 我想从中解析时间 NSString longdate Mar 27 2011 8 38 38 PM 我想解析这个日期并仅输出时间部分 小时 分钟 上午 下午 First convert our string into an
  • 如何排除与 ASP.Net 中 HttpHandler 的指定路径匹配的内容?

    我知道 如果我想将 MyPage aspx 的请求转到名为 MyAssembly 的程序集中名为 MyHandler 的类 我可以将其添加到我的 web config 文件中
  • VS 2010 无法删除继承的附加依赖项

    您好 我错误地在项目配置 gt 链接器 gt 输入 gt 附加依赖项设置下添加了 cv210d lib cxcore210d lib 和 highgui210d lib 作为继承值 但我似乎无法将它们从 继承的 附加依赖项中删除 因此 每次
  • 如何执行伴生对象 Lateinit 是否初始化检查

    如果我有一个 Lateinit 变量 我可以检查它是否使用 this lateInitVar isInitialized 进行初始化 如下所示https stackoverflow com a 47860466 3286489 但是 如果该
  • 单击微调器时出现无法添加窗口、令牌无效错误

    我有一个 Android 应用程序 当单击侧栏中的选项时 它会转到一个片段 然后进入另一个具有可单击单选按钮的片段 单击这些时 它将创建一个弹出窗口 其中包含一些文本字段 基本上流程是这样的 活动 gt 片段 1 gt 片段 2 gt 弹出
  • 如果散列中有一个或多个字段,则使用 HashSet 和 Contains 返回 TRUE

    我想知道是否可以使用 HashSet 并创建该方法Contains如果某个字段位于给定对象的哈希中 则返回 true 这是我想要的一个例子 static void Main string args HashSet
  • Google Drive API v3 在 java 中获取根文件夹 ID

    我尝试了几种方法 但无法获取 Java Api v3 中的根文件夹 id 我尝试过的 String id service files get fileId root setFields id execute getId String id
  • 如何将 JSON 字符串转换为 BSONDocument

    我有以下使用reactivemongo 驱动程序的函数 并且实际上可以很好地写入数据库 def writeDocument val document BSONDocument firstName gt Stephane lastName g
  • 如何更新 Tkinter 标签?

    我有一个简单的 tkinter GUI 其中有一个显示数字和按钮的标签 我将其设置为变量 x 当按下按钮时 x 的值增加 1 但是 当我点击按钮时 标签不会更新 我该怎么做呢 from tkinter import x 1 def add
  • Windows 7 图标大小问题

    我正在尝试创建一个应用程序图标 我拿了一堆创建的 ico 文件 每个大小一个 并将它们组合成一个 ico 文件 我可以看到他们都很好 我有 16x16 32x32 48x48 64x64 和 128x128 图标 全部 32 位 带透明度
  • SwiftUI - NavigationLink 不适用于按钮

    我正在制作一个应用程序 在其中输入两个数字 并希望在单击按钮时在第二个屏幕中显示数字的相加结果 我可以在控制台中打印结果 但不幸的是 按钮周围的导航链接似乎不起作用 如果我将 NavigationLink 放在按钮标签周围而不是整个按钮周围