我有NavigationController,它在viewWillAppear()中加载背景图片:
override func viewWillAppear(_ animated: Bool) {
let cityname = getCityWith(id: self.model?.user.currentCity ?? 0).imageName
self.background.image = UIImage(named: cityname)
super.viewWillAppear(animated)
}
当我移到另一个控制器时,键“ currentCity”已更改:
func setNewCityValueForUser(city: Int) {
dataManager.changeUserParameterReference(key: "currentCity", value: city) { [weak self] (result) in
switch result {
case .success( _):
self?.getUser()
case .failure(let error):
self?.handleError?(error)
}
}
}
当我现在弹出第二个视图时,我返回到NavigationController,它将加载ViewDidAppear,但不会更改背景图像。如果我再次转到另一个第二视图并返回主控制器,则会加载新图像。
我在这里做什么错了?
答案 0 :(得分:0)
您的setNewCityValueForUser
是异步的,必须有一个延迟,但是您当前的代码将与此处0城市的图像一起显示
let cityname = getCityWith(id: self.model?.user.currentCity ?? 0).imageName
加getCityWith
不会返回要使用的.imageName