SwiftUI .onAppear, yalnızca bir kez çalışıyor
Bir SwiftUI
uygulamada şöyle bir kodum var:
var body: some View {
VStack {
Spacer()
........
}
.onAppear {
.... I want to have some code here ....
.... to run when the view appears ....
}
}
Benim sorunum, .onAppear bloğunun içinde bazı kodları çalıştırmak istiyorum , böylece uygulama ekranda göründüğünde, başlatıldıktan sonra veya bir süre arka planda kaldıktan sonra çalıştırılır. Ancak görünen o ki bu kod, uygulama başlangıcında bir kez çalıştırılıyor ve daha sonra asla çalıştırılmıyor. Bir şey mi kaçırıyorum? Yoksa istediğim sonucu elde etmek için farklı bir strateji mi kullanmalıyım?
Yanıtlar
5 Frankenstein
Sen app ön plan girerken olayı gözlemlemek ve kullanma yayınlamak zorunda kalacak @Published
için ContentView
. Bunu nasıl yapacağınız aşağıda açıklanmıştır:
struct ContentView: View {
@ObservedObject var observer = Observer()
var body: some View {
VStack {
Spacer()
//...
}
.onReceive(self.observer.$enteredForeground) { _ in
print("App entered foreground!") // do stuff here
}
}
}
class Observer: ObservableObject {
@Published var enteredForeground = true
init() {
if #available(iOS 13.0, *) {
NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIScene.willEnterForegroundNotification, object: nil)
} else {
NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
}
}
@objc func willEnterForeground() {
enteredForeground.toggle()
}
}
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'