SwiftUI .onAppear, yalnızca bir kez çalışıyor
Aug 15 2020
Bir SwiftUIuygulamada şö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 Aug 15 2020 at 15:46
Sen app ön plan girerken olayı gözlemlemek ve kullanma yayınlamak zorunda kalacak @Publishediç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()
}
}
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
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'