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


目录
相关文章
|
6月前
|
小程序 UED 开发者
小程序如何监听页面的滚动事件
小程序如何监听页面的滚动事件
203 0
|
JavaScript 开发者
使用 watch 监听文本框数据的变化|学习笔记
快速学习使用 watch 监听文本框数据的变化
1051 0
使用 watch 监听文本框数据的变化|学习笔记
|
JavaScript 开发者
使用watch监听文本框数据的变化|学习笔记
快速学习使用watch监听文本框数据的变化
127 0
使用watch监听文本框数据的变化|学习笔记
|
安全 JavaScript API
【笔记】用 window.postMessage 进行窗口之间的隐式信息传递
用 window.postMessage 进行窗口之间的隐式信息传递
337 0
|
JavaScript
iview的table 组件展开事件能否绑定到其他事件上?看这里!
iview的table 组件展开事件能否绑定到其他事件上?看这里!
218 0
iview的table 组件展开事件能否绑定到其他事件上?看这里!
|
JavaScript C#
C#(WPF)去除事件中注册的事件处理方法!
在WPF中,移除一个事件中已经注册的处理方法,看似简单,实际还是很痛苦的一件事情。因为C#的灵活性,定义事件的方法也是多种多样。我自己定义了一个事件: public event EventHandler TestEvent; 当我想注销这个事件上注册的所有方法的时候,我可以按如下的方法进行 Delegate[] dels = TestEvent.
4012 0
|
.NET C# 开发框架
WPF的路由事件、冒泡事件、隧道事件(预览事件)
原文:WPF的路由事件、冒泡事件、隧道事件(预览事件) 本文摘要: 1:什么是路由事件; 2:中断事件路由; 3:自定义路由事件; 4:为什么需要自定义路由事件; 5:什么是冒泡事件和预览事件(隧道事件); 1:什么是路由事件     WPF中的事件为路由事件,所谓路由事件,MSDN定义如下:     功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件。
1769 0
|
C#
WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果
原文:WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果   本以为Label也有TextChanged 事件,但在使用的时候却没找到,网友说Label的Content属性改变肯定是使用赋值操作,赋值的时候就可以对其进行相应的操作所以不需TextChanged 事件。
2056 0