Swift 4:UINavigationController背景图像未在viewDidAppear中更新

时间:2019-03-19 18:20:43

标签: swift refresh reload navigationcontroller

我有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,但不会更改背景图像。如果我再次转到另一个第二视图并返回主控制器,则会加载新图像。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

您的setNewCityValueForUser是异步的,必须有一个延迟,但是您当前的代码将与此处0城市的图像一起显示

let cityname = getCityWith(id: self.model?.user.currentCity ?? 0).imageName

getCityWith不会返回要使用的.imageName