【发布时间】:2021-08-18 18:51:47
【问题描述】:
它在 CarDetailViewModel 中的 @Published 变量中获取数据,但我无法将此变量中的数据传递给 ViewController 中的变量。
视图模型:
class CarDetailViewModel: ObservableObject {
@Published var carDetail: Car = Car(brand: "", features: CarFeatures(model: "", km: 0, year: 0, price: 0, image: "", gearType: "", fuelType: "", carVersion: ""))
private var anyCancellable = Set<AnyCancellable>()
var carSubject = PassthroughSubject<Car, Never>()
func prepareCarDetail() {
carSubject
.sink {[weak self] car in
self?.carDetail = car
print("car: \(self?.carDetail)") // it is working.
}
.store(in: &anyCancellable)
}
}
视图控制器:
assignmentDataToUI函数运行时,屏幕上的label为blank。
class CarDetailViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var brandLabel: UILabel!
@IBOutlet weak var modelLabel: UILabel!
@IBOutlet weak var gearTypeLabel: UILabel!
@IBOutlet weak var fuelTypeLabel: UILabel!
@IBOutlet weak var priceLabel: UILabel!
var carDetailViewModel = CarDetailViewModel()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
carDetailViewModel.prepareCarDetail()
assignmentDataToUI()
}
func assignmentDataToUI() {
brandLabel.text = carDetailViewModel.carDetail.brand
}
}
【问题讨论】:
-
不清楚问题是什么。您订阅的是 carSubject,而不是 carDetail。
-
当 CarDetailViewModel 中的 @Published 变量发生变化时,我想将此变化传递给 CarDetailViewController。
-
但你没有这样做。
-
我的代码正在运行,先生。你可以检查吗 ?我写了答案
-
如果它工作,有什么问题?