SwiftUI—如何实现对视图显示和消失事件的监听

简介: SwiftUI—如何实现对视图显示和消失事件的监听

我们经常在列表显示之后,从网络下载新的数据。或者在用户登录表单消失之后,刷新当前页面的用户状态。这就需要实现对视图显示和消失事件的监听。


示例代码:


struct DetailView: View { //首先定义一个遵循View协议的结构体,作为需要进行显示或隐藏的视图
    var body: some View { //实现协议里规定必须实现的body属性,所有子视图都需要放置在body属性里
        Text("Detail")
        .onAppear { //通过onApear方法,对文本视图的显示事件进行监听
            print("DetailView appeared!") //当文本视图显示之后,在控制台输出一条日志
        }.onDisappear { //接着通过onDisappear方法,对文本视图的消失事件进行监听
            print("DetailView disappeared!") //当文本视图消失之后,在控制台输出一条日志
        }
    }
}
struct ContentView : View {
    @State private var isPresented = false //标识是否弹出模态窗口
    var body: some View
    {
        Text("Show Detail > ").sheet(isPresented: $isPresented, content: { //修改此处的文本视图,当点击文本视图时,弹出一个模态窗口,并设置模态窗口的内容为刚刚定义的视图
            DetailView()
        }).onTapGesture { //为文本视图添加一个触摸手势,当点击文本视图检测到手势事件时,弹出一个指定的模态窗口
            self.isPresented = true
        }.onDisappear {
            print("ContentView disappeared!")
        }.onAppear {
            print("ContentView appeared!")
        }
    }
}


2466108-b278a59276099098.webp.jpg


目录
相关文章
|
算法 安全 数据安全/隐私保护
介绍一下移动应用中的数据加密技术。
移动应用数据加密保护隐私,包括对称加密(速度快但密钥管理难)、非对称加密(公钥私钥确保安全如RSA、ECC)、哈希函数(固定长度输出验证信息)和数字签名(公钥验证来源与完整性)。选择合适的加密算法对安全性至关重要,兼顾性能以不影响用户体验。加密技术确保信息的机密性、真实性和完整性,增强用户信任。开发者应熟练掌握这些工具。
402 0
|
存储 Swift
大师学SwiftUI第18章Part3 - 自定义视频播放器
录制和播放视频对用户来说和拍照、显示图片一样重要。和图片一样,Apple框架中内置了播放视频和创建自定义播放器的工具。
521 0
|
11月前
|
传感器 人工智能 物联网
探索智能家居技术:现状与未来
本文深入探讨了智能家居技术的发展历程、当前主要技术和应用,并展望了其未来的发展趋势。通过对现有技术的详细解析和案例分析,揭示了智能家居在提升生活品质、节能减排等方面的潜力,同时指出了目前面临的挑战和可能的解决方案。
|
负载均衡 网络协议 应用服务中间件
HAProxy 与 NGINX:全面比较
【8月更文挑战第21天】
2101 0
HAProxy 与 NGINX:全面比较
|
SQL 消息中间件 关系型数据库
实时计算 Flink版产品使用问题之元数据血缘可以通过什么来获取
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
定位技术
高德地图之获取经纬度并且根据获取经纬度渲染到路线规划
高德地图之获取经纬度并且根据获取经纬度渲染到路线规划
315 0
【洛谷 P2669】[NOIP2015 普及组] 金币 题解(循环)
`NOIP2015`普及组题目,骑士按周期领金币:第一天1枚,随后$n$天每天$n$枚,然后$n+1$天每天$n+1$枚。给定天数$k$,求总金币数。输入$k$,输出金币总数。样例输入6,输出14;输入1000,输出29820。代码使用循环和变量控制周期,累计金币数。
347 0
|
机器学习/深度学习 人工智能 安全
那年我头脑发热,选择了自动化,后来我掉入计算机的世界无法自拔
那年我头脑发热,选择了自动化,后来我掉入计算机的世界无法自拔
|
存储 Ubuntu Java
Ubuntu安装JDK与IntelliJ IDEA
APT(Advanced Package Tool)是Linux系统上的包管理工具,能自动解决软件包依赖关系并从远程存储库中获取安装软件包。推荐使用APT管理软件包,因为它简便易用且有效地处理依赖关系,无需手动配置环境变量。这样,您可以轻松地安装和更新软件包,而APT会自动处理所有必需的依赖项,确保系统的稳定性和功能正常运行。
365 1
|
SQL 存储 安全
【必知必会的MySQL知识】③DML语言
【必知必会的MySQL知识】③DML语言
180 0
【必知必会的MySQL知识】③DML语言