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

当计算中没有值时,NaN将被调度。如何在SwiftUI中显示"0“或"-”

在SwiftUI中,可以使用条件语句来判断计算结果是否为NaN,并根据结果显示相应的内容。以下是一个示例代码:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    let result: Double = 0.0 // 假设这是计算结果

    var body: some View {
        VStack {
            if result.isNaN {
                Text("-") // 如果计算结果为NaN,则显示"-"
            } else {
                Text("\(result)") // 如果计算结果不为NaN,则显示计算结果
            }
        }
    }
}

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

在上述代码中,我们使用了一个条件语句来判断result是否为NaN。如果是NaN,我们显示一个文本视图Text("-"),否则显示计算结果Text("\(result)")

这是一个简单的示例,你可以根据实际需求进行修改和扩展。关于SwiftUI的更多信息和用法,请参考SwiftUI官方文档

请注意,根据要求,我不能提及腾讯云相关产品和产品介绍链接地址。如果你需要了解腾讯云的相关产品和服务,建议访问腾讯云官方网站进行详细了解。

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

相关·内容

SwiftUI 视图的生命周期研究

State 发生变化后,SwiftUI 会生成一棵新的视图树(Source of truth 没有发生变化的节点,不会重新计算,直接使用旧),并同老的视图树进行比对,SwiftUI 将对其中有变化的部分重新布局渲染...•在 SwiftUI 生成视图发现没有对应的实例SwiftUI 会创建一个实例从而获取它的 body 结果。...通常情况下,SwiftUI 在需要渲染屏幕某个区域需要该区域的数据配合布局,会在视图树上创建对应的视图。不再需要其参与布局渲染视图将被销毁。...即使 Cell 视图没有显示在屏幕,仍会触发 onAppear ScrollView { VStack { ForEach(0..<100) { i in Text...在前文的视图树介绍我们提到, SwiftUI 重建该树,如果树上某个节点(视图)的 Source of truth 没有发生变化,将不重新计算,直接使用旧

4.4K30

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

在我的例子,不拖动0 到 75,拖动0 到 100。有什么办法可以阻止这种情况吗?A:你可以用 .chartYScale(domain: 0 ... 75) 锁定 Y 轴的刻度域。...最近,我注意到 SwiftUI 视图的 onAppear 在意想不到的时间启动,比如 UITabBarController 被创建,而不是视图本身出现时。...2、视图出现在 UITabBarController ,推荐的执行代码的方法是什么?...对于非惰性视图( LazyVStack ),一旦 hosting controller 的视图被初始化,onAppear 将被调用。...详细请阅读 避免 SwiftUI 视图的重复计算[22] 。从父视图通过环境进行传递应该可以满足提问者当前的需求:父视图可以传入新,当前视图也可以在视图范围内改变该

12.2K20
  • SwiftUI 动画进阶 — Part4:TimelineView

    可能的是:live、seconds 和 minutes。以此为提示,避免显示与 Cadence 无关的信息。典型的例子,是避免在具有秒分钟节奏的调度程序的时钟上显示毫秒。...我们新调度程序将被称为:CyclicTimelineSchedule,并将接收一组时间偏移量。每个偏移都将相对于数组的前一个调度程序用尽偏移量,它将循环回到数组的开头并重新开始。...我们的调度程序会记住最后日期并添加适当的偏移量。没有更多的偏移量,它会循环回到数组的第一个。... TimelineView 出现时,它需要显示一些东西,以便绘制我们的视图。我们将使用第一个关键帧作为我们的视图状态,但是当我们循环,该帧将被忽略。...:第一次是在时间线更新,然后在我们推进动画状态再次计算

    3.8K30

    掌握 SwiftUI 的 Safe Area

    SwiftUI 同时提供了一些方法和工具让开发者对安全区域有所控制。 本文将探讨如何在 SwiftUI 获取 SafeAreaInsets、将视图绘制到安全区域之外、修改视图的安全区域等内容。...如果一个视图可以完整地放置在父视图的安全区域中,该视图的 safeAreaInsets 为 0视图尚未在屏幕上可见,该视图的 safeAreaInset 也为 0 。...在 SwiftUI ,开发者通常只有在需要获取 StatusBar + NavBar 的高度 HomeIndeicator + TabBar 的高度才会使用到 safeAreaInsets 。...从 iOS 14 开始,SwiftUI 计算视图的安全区域,将软键盘在屏幕上的覆盖区域(iPadOS 下,将软键盘缩小后键盘的覆盖区域将被忽略)也一并进行考虑。...safeAreaInsetList2 遗憾的是,在 iOS 15 之前,SwiftUI没有提供调整视图安全区的手段,如果我们想通过 SwiftUI 的手段创建一个自定义 Tabbar ,列表中最后的内容将被

    7.6K31

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

    Swiftcord[12] 的代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 显示大数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。...但是,此转换仅在文本字段完成编辑才会发生,并且不会阻止输入非数字字符。目前 SwiftUI 没有 API 可以限制用户在字段输入的字符。...动画转场Q:为什么下面的代码没有显示动画转场。...关于其他点,目前没有合适的 API 。连锁动画Q:在 SwiftUI ,如何实现连锁动画?例如,我想先给一个视图做动画,动画完成后立即启动另一个动画。A:不幸的是,目前不可能实现连锁动画。...A:解决办法:保留 TextField ,但它不能被编辑,有条件地设置 disabled(true),它可以编辑使用 disabled(false) 。

    14.8K30

    SwiftUI TextField进阶——格式与校验

    本文为【SwiftUI 进阶】系列文章的一篇,在本文中,我将介绍如何在TextField实现如下功能: •屏蔽无效字符•判断录入的内容是否满足特定条件•对录入的文本实时格式化显示 textfieldDemo1...在为SwiftUI增加新功能,要求自己尽量遵守以下原则: •优先考虑能否在SwiftUI原生方法中找到解决手段•确需采用非原生方法,尽量采用非破坏性的实现,新增功能不能以牺牲原有功能为代价(需兼容官方的...如何在TextField实现格式化显示 现有格式化方法 在SwiftUI 3.0,TextField新增了使用新老两种Formatter的构造方法。...有些开发者可以通过自定义键盘添加inputAccessoryView来解决,但对于其他没有能力精力的开发者来说,如果能直接对录入的无效字符进行屏蔽则也是不错的解决方案。...不利于判断用户是否录入新的信息(更多的信息可参阅如何在SwiftUI创建一个实时响应的Form[10])。方案二允许不提供初始,支持可选

    8.1K20

    SwiftUI TextField 进阶 —— 事件、焦点、键盘

    事件 onEditingChanged TextField 获得焦点(进入可编辑状态),onEditingChanged将调用给定的方法并传递true TextField 失去焦点,再次调用方法并传递...onCommit 当用户在输入过程按下(点击)return键触发 onCommit(无法通过代码模拟触发)。...接受到的SubmitTriggers不包含在 onSubmit 设置的SubmitTriggers,传递将终止。...使用快捷键获得焦点 一个视图中有多个 TextField(包括 SecureField),我们可以直接使用Tab键按顺序在 TextField 中切换焦点,但 SwiftUI没有直接提供使用快捷键让某个...适用于正整数 PIN•phonePad数字及其他电话中使用的符号,*#+•namePhonePad方便录入文字及电话号码。

    13.2K10

    StateObject 与 ObservedObject

    被订阅的可观察对象通过内置的 Publisher 发送数据( 通过 @Published 直接调用其 objectWillChange.send 方法 ),StateObject 和 ObservedObject...订阅 与 Cancellable在 Combine 使用 sink assign 来订阅某个 Publisher ,必须要持有该订阅关系,才能让这个订阅正常工作,订阅关系被包装成 AnyCancellable...SwiftUI 也会在视图存续期内因多种原因,不断地依据描述该区域的声明创建新的实例,从而保证始终能够获得准确的计算。...( 有些情况下,创建新实例并不一定会使用 ),那么,最初创建的 TestObject 类实例将被释放( 因为没有强引用 ),ObservedObject 持有的订阅关系也将无效。...不在它的构造方法引入无关的操作可以极大地减轻系统的负担。对于数据的准备工作,可以使用 onAppear task ,在视图加载进行。

    2.4K20

    SwiftUI 与 Core Data —— 数据获取

    但如果在视图尚未加载没有提供环境( 例如忘记注入环境对象,没有提供正确的视图上下文 )的情况下访问环境数据,将引发应用崩溃。... SwiftUI 在视图存续期中重新创建视图描述实例,自定义类型也将一并重新创建在视图存续期中,如果 SwiftUI 创新创建了视图描述实例,那么无论视图描述( 符合 View 协议的 Struct...)的属性是否符合 DynamicProperty ,都将被重建。...ID 顺序数量没有发生变化时,即使数据的属性发生变化,MockableFetchRequest 也不会更新数据集。...在下一篇文章,我们将探讨如何在 SwiftUI 安全地响应数据,如何避免因为数据意外丢失而导致的行为异常以及应用崩溃。希望本文能够对你有所帮助。

    4.6K30

    掌握 Transaction,实现 SwiftUI 动画的精准控制

    本文将通过探讨 Transaction 的原理、作用、创建和分发逻辑等内容,告诉读者如何在 SwiftUI 实现更加精准的动画控制,以及需要注意的其他问题。...传递进来的 transaction 为 nil SwiftUI 会优化调用 .transaction 修饰器闭包的时机。... isActive 为 true ,通过动画更改颜色; scale 为 true ,不使用动画进行缩放。...这是因为在上面的代码没有为 SubView 外面的 VStack 声明“隐式动画”。因此, Rectangle 的尺寸增大,VStack 会调整布局。...使用显式动画屏蔽系统组件动画 在 iOS 17 SwiftUI 会让大多数系统组件( Sheet、FullScreeCover、NavigationStack、Inspector 等)在实现动画

    47320

    SwiftUI 4.0 的全新导航系统

    .<30, id: \.self) { i in // 此处我们没有使用 NavigationLink 来切换右侧视图,而是改变了 seletion 的,让右侧视图响应该的变化...绑定了数据后,通过 List 构造方法创建的循环 ForEach 创建的循环中的内容( 不能自带点击属性,例如 Button onTapGesture ),将被隐式添加 tag 修饰符,从而具备点击后可更改绑定数据的能力...iPad 在 landscape 显示状态下,默认即为此种模式 automatic 默认,根据上下文自动调整外观样式 在 NavigationTitle 添加菜单 使用新的 navigationTitle...} RocketSim_Screenshot_iPhone_13_Pro_Max_2022-06-12_09.12.01 NavigationStack 的 toolbar 背景色只有在视图上滚才会显示...相当一部分开发者由于版本适配的原因并不会使用新的 API ,因此,每个人都需要认真考虑如下问题: 如何从新 API 获得灵感 如何在老版本运用编程式导航思想 如何让新老版本的程序都能享受系统提供的便利

    10.3K62

    SwiftUI:WeSplit项目 计算每个人的金额

    听起来很简单,但有一些小问题: 正如您已经看到的,numberOfPeople被设置为了2——它存储3,意味着5个人。...尽管我们编写代码只显示十进制键盘,但没有什么可以阻止创造性用户在其中输入无效,因此我们需要小心处理。 我们想要的另一个Double是账单金额。...我们可以更改表的最后一部分,以便它显示正确的文本。...希望您现在可以亲眼看到,SwiftUI的视图是其状态的函数——状态改变,视图会自动更新以匹配。 在我们完成之前,我们要解决显示的一个小问题,这就是总价格的显示方式。...我们可以通过使用SwiftUI添加的一个简洁的字符串插功能来解决这个问题:决定数字应该如何在字符串中格式化的能力。

    1.6K20

    探讨 SwiftUI 的几个关键属性包装器

    @State @State 是 SwiftUI 中最常用的属性包装器之一,主要用于在视图内部管理私有数据。它特别适合存储类型数据,字符串、整数、枚举结构体实例。...它主要用于存储类型数据(与视图的生命周期一致)。 典型应用场景 需要因视图内的数据变化而触发视图更新,@State 是理想的选择。 它常用于简单的 UI 组件状态管理,开关状态、文本输入等。...DataModel 实例的 UUID // MyView 的 'items' 数组改变,这里显示的 UUID 会更新,展示了 @ObservedObject 的动态切换能力...它提供了一种便捷的方式在不同的视图层级引入共享数据,而无需显式地通过每个视图的构造器传递。 典型应用场景 需要在多个视图间共享同一个数据模型,如用户设置、主题应用状态。...典型应用场景 需要访问和响应界面样式(暗模式/亮模式)、设备方向、字体大小等由系统上层视图提供的环境( 通常对应类型)。

    24610

    Swift 周报 第四十二期

    介绍 该提案引入了 then 关键字,用于确定单个分支包含多个语句的 if switch 表达式的。它还介绍了 do 表达式。...这些将允许借用改变部分匹配而不消耗它。 模式的所有权行为:分析 Swift 的各种模式类型以了解其所有权含义。...总体而言,我们的目标是在 Swift 引入更细致的模式匹配,允许在不消耗的情况下进行借用和变异,并探索这些增强功能在各种语言结构( switch 语句和条件)的含义。...线程调度和 Actors 的执行方式[11] 摘要: 本文讨论了在 Swift 中使用线程调度和 Actors 的执行机制。...Actors 可以确保代码在特定线程上执行,主线程后台线程,并帮助同步访问可变状态以防止数据竞争。

    21710

    一段因 @State 注入机制所产生的“灵异代码”

    通过这些方式注入的依赖,无论视图的 body 是否使用了该实例的属性,只要该实例的 objectWillChange.send() 方法被调用,与其关联的视图都将被强制刷新( 重新计算 body ...打印 Parent View update),Sheet 代码块的 SheetInitMonitorView 没有任何输出( 意味着闭包没有被调用 ),只有在模态视图进行显示SwiftUI 才执行...(deadline: .now() + 0.1){ // 延迟已保证 Sheet 的视图已完成创建 dump(_n) }}Sheet 视图的上下文 SwiftUI 创建并显示一个...现象分析根据上文中介绍的内容,我们对本文代码的奇怪现象进行一个完整的梳理: ContextView 不包含 Text( ContextView 没有与 n 创建关联 )程序运行,SwiftUI 对...Sheet 的 Text 显示 n = 1点击 Sheet 的 Close 按钮,执行 Button 闭包,重新获得 n 的当前( n = 2 ),打印为 2 ContextView 包含

    1.9K20

    SwiftUI中使用UIKit视图

    SwiftUI中使用UIKit视图 想获得更好的阅读体验可以访问我的博客www.fatbobman.com,点击下方的阅读原文 已迈入第三个年头的SwiftUI相较诞生初始已经提供了更多的原生功能...SwiftUI的视图,本身没有清晰(可适当描述)的生命周期,它们是、是声明。SwiftUI提供了几个修改器(modifier)来实现类似UIKit钩子方法的行为。...例如,UIKit我们将一个代理对象附加到Text field视图上,当用户输入时,当用户按下return键,该代理对象对应的方法将被调用。...如果按照TextField的正常行为,当我们在其中输入任何文本,下方的Text应该显示出对应的内容,不过在我们当前的代码版本,并没有表现出预期的行为。...点击Random Name引起name变化时,SwiftUI将会调用updateUIView,而我们并没有在其中做任何的处理。

    8.2K22

    高级 SwiftUI 动画 — Part 2:GeometryEffect

    虽然 SwiftUI 没有这些功能,但我们可以模拟它。...为了模拟关键帧,我们将定义一个可动画的参数,我们将其从 0 到 1 改变。该参数为 0.2 ,我们达到了动画的前 20%。该参数为 0.8 更大,我们就进入了动画的最后 20%。...虽然SwiftUI已经有了一个修饰符,即.rotrotation3DEffect(),但这个修饰符将是特别的。每当我们的视图旋转到足以向我们展示另一面,一个布尔绑定将被更新。...在我们的视图中,我们将使用flipped的来有条件地显示两个视图中的一个。然而,在这个具体的例子,我们将使用一个更多的技巧。如果你仔细观察视频,你会发现这张牌一直在变化。...在这个例子,我们的效果将通过一个任意的路径移动一个视图。这个问题有两个主要挑战: 1.如何获取路径特定点的坐标。 2.如何在通过路径移动确定视图的方向。

    1.3K30

    @State 研究

    每当视图在创建解析,都会为该视图和与该视图中使用的状态数据之间创建一个依赖关系,每当状态的信息发生变化时,有依赖关系的视图则会马上反应出这些变化并重绘。...2.状态发生变化后,视图会自动重绘以反应状态的变化。...mutating func update()} 工作原理 前面我们说过 @State 有两个作用 1.通过使用@State,我们可以在未使用mutating的情况下修改结构2.状态发生变化后,...虽然我们在MainView中使用@State声明了date,并且在MainView修改了date的,但由于我们并没有在MainView中使用date的来进行显示或者判断,所以无论我们如何修改date...我们把@State换成了@ObservedObject ,同样在MainView没有显示store.date的或者用其来做判断,但是只要我们改变了store里的date,MainView便会刷新重绘

    2.9K20
    领券