SwiftUI 使用 .onDisappear 修饰符来在视图消失时销毁定时器

5 min read

在SwiftUI中,可以使用.onDisappear修饰符来捕获视图消失事件,并在这个时候执行一些操作,例如销毁定时器。具体实现方法如下:

  1. 创建一个定时器对象,并保留它的引用:

@State var timer: Timer?

  1. 在视图加载时,启动定时器:

.onAppear {
self.timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
// 定时器事件处理代码
}
}

  1. 在视图消失时,销毁定时器:

.onDisappear {
self.timer?.invalidate()
}

完整示例代码如下:

struct ContentView: View {
@State var timeCount = 0
@State var timer: Timer?
var body: some View {
VStack {
Text("(timeCount)")
.onAppear {
self.timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
self.timeCount += 1
}
}
}
.onDisappear {
self.timer?.invalidate()
}
}
}