使用继承更新所有ViewControllers的UI

时间:2017-07-12 19:10:30

标签: ios swift

我有一个BaseViewController,我继承了2个ViewControllers。它们都有一个小的播放器部分,并根据我想要更新该UI的音乐类型。

所以我将代码保存在BaseViewController中,并通过我从其中一个继承的ViewControllers触发的Notification调用它

但我遇到的问题是,UI不会正确更新,图像永远不会加载,有时文本字段也不会更新。

func updatePlayerViewWithLiveDetails() {
    guard let user = SWMusicManager.sharedInstance.liveUser else { return }
    DispatchQueue.main.async {
        self.bottomView.liveSharedBy.text = "Shared by \(user.username ?? "")"
        if let followersCount = user.followers {
            self.bottomView.liveListenersLabel.text = String(describing: followersCount)
        }
    }
    if let profilePictureURL = user.profilePictureUrl {
        SWServiceController().downloadImageFrom(profilePictureURL, completion: { (success, data) in
            if success {
                guard let imageData = data else { return }
                guard let image = UIImage(data: imageData) else { return }
                DispatchQueue.main.async { [weak self] in
                    self?.bottomView.profileImageView.image = image
                }
            }
        })
    }

我有办法解决这个问题。

编辑1:我知道代码被执行了两次,因为它已经被继承了两次并且存在于tab-controller中。

0 个答案:

没有答案