[英]ObservableObject not updating View
我創建了一個 Atmeter 作為 ObservableObject,以便我可以從我的應用程序中的多個點訪問它。 不幸的是,當@Published 變量壓力發生變化時,視圖沒有更新。 有人可以解釋為什么嗎?
我已經嘗試過 {willSet {objectWillChange.send()} },它會觸發但也不會更新視圖!
高度計:
//
// Altimeter.swift
// iAlti_v2
//
// Created by Lukas Wheldon on 14.12.20.
//
import Foundation
import CoreMotion
import Combine
class Altimeter: CMAltimeter, ObservableObject {
static let shared = Altimeter()
@Published var pressure: Double = 0
func start() {
if Altimeter.isRelativeAltitudeAvailable() {
switch Altimeter.authorizationStatus() {
case .notDetermined: // Handle state before user prompt
debugPrint("CM: Awaiting user prompt...")
//fatalError("Awaiting CM user prompt...")
case .restricted: // Handle system-wide restriction
fatalError("CM Authorization restricted!")
case .denied: // Handle user denied state
fatalError("CM Authorization denied!")
case .authorized: // Ready to go!
debugPrint("CM Authorized!")
@unknown default:
fatalError("Unknown CM Authorization Status!")
}
Altimeter.shared.startRelativeAltitudeUpdates(to: OperationQueue.main) { data, error in
if let trueData = data {
//debugPrint(#function, trueData)
Altimeter.shared.pressure = trueData.pressure.doubleValue * 10
} else {
debugPrint("Error starting relative Altitude Updates: \(error?.localizedDescription ?? "Unknown Error")")
}
}
}
}
}
風景:
import SwiftUI
struct SwiftUIView: View {
var body: some View {
Text("\(Altimeter.shared.pressure)")
}
}
您需要在 SwiftUIView 中使用 @ObservedObject 包裝器。
不要只在文本中調用 Object。
這解決了我的問題:
@ObservedObject private var altimeter = Altimeter.shared
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.