首页
学习
活动
专区
工具
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.3K30

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.7K30

掌握 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.5K31

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

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

14.7K30

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.1K10

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

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

44220

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

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.2K62

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

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

18910

Swift 周报 第四十二期

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

20510

SwiftUI中使用UIKit视图

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

8.1K20

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

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

1.5K20

一段因 @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 动画 — 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
领券