Почему мой UIViewController не обновляется, когда функция делегата вызывается из класса UICollectionView - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть ViewController, в котором есть функция делегата из UICollectionViewController. Функция делегата (названная getCollectionViewSelection) работает, как и ожидалось, когда она вызывается.

Вот функция делегата.

    //protocol func from collectionview.
    func getCollectionViewSelection(allSounds: SoundsWithSectionIndex, sound: Sounds) {


        let test2 = sound.playerBackgroundImage
        let iVB = self.imageViewBackground
        iVB.image = UIImage(named: test2)
        self.whatsPlaying.text = sound.description

        print("delegate called : \(test2)")
    }

Я знаю, что это работает, потому что оператор print работает. Однако iVB.image = UIImage (названный: test2) не обновляет фон изображения.

Вот весь контроллер представления:

import UIKit

class SoundViewLeftViewController: UIViewController, MainCollectionViewControllerDelegate {

    private lazy var whatsPlaying: UILabel = {
        let wP = UILabel()

        wP.textAlignment = NSTextAlignment.center

        let strokeTextAttributes = [
            //NSAttributedString.Key.strokeColor : UIColor.black,
            NSAttributedString.Key.foregroundColor : UIColor.black,
            //NSAttributedString.Key.strokeWidth : -4.0,
            NSAttributedString.Key.font : UIFont(name: "DINAlternate-Bold", size: 18)]
        as [NSAttributedString.Key : Any]

        wP.attributedText = NSMutableAttributedString(string: "Sleepzzzzzz", attributes: strokeTextAttributes)
        wP.backgroundColor = .lightGray
        wP.sizeToFit()
        wP.alpha = 0.75
        wP.layer.borderWidth = 1
        wP.layer.cornerRadius = 10
        wP.layer.masksToBounds = true
        wP.layer.borderColor = UIColor.white.cgColor
        wP.isHidden = false
        return wP
    }()


    private lazy var imageViewBackground: UIImageView = {
        let iVB = UIImageView()
        return iVB
    }()

     private lazy var playPauseButton: UIButton = {
         let pPB = UIButton()
         let playImage = UIImage(named: "play")
         let pauseImage = UIImage(named: "pause")
         pPB.setImage(playImage, for: .selected)
         pPB.setImage(pauseImage, for: .normal)
         //let tapGesturePlayPause = UITapGestureRecognizer(target: self, action: #selector(togglePlayPause))
         //pPB.addGestureRecognizer(tapGesturePlayPause)
         pPB.imageView?.contentMode = .scaleAspectFit
         pPB.alpha = 0.75

         return pPB
     }()


    //protocol func from collectionview.
    func getCollectionViewSelection(allSounds: SoundsWithSectionIndex, sound: Sounds) {


        let test2 = sound.playerBackgroundImage
        let iVB = self.imageViewBackground
        iVB.image = UIImage(named: test2)
        self.whatsPlaying.text = sound.description

        print("delegate called : \(test2)")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        self.view.backgroundColor = UIColor.black
        loadViewItems()

    }

    func loadViewItems() {
        let viewWidth = self.view.frame.size.width
        let viewHeight = self.view.frame.size.height


        let pPB = playPauseButton
        pPB.frame = CGRect(x: 0, y: viewHeight * 0.45, width: viewWidth * 0.1, height: viewHeight * 0.05)
        pPB.center.x = view.center.x
        pPB.isHidden = false

        let wP = whatsPlaying
        wP.frame = CGRect(x: 0, y: viewHeight * 0.03, width: viewWidth, height: viewHeight * 0.05)

        let iVB = imageViewBackground
        iVB.frame = CGRect(x: 0, y: 0, width: viewWidth, height: viewHeight)
        iVB.image = UIImage(named: "bird2")
        iVB.contentMode = .scaleAspectFill

        self.view.addSubview(iVB)
        self.view.addSubview(pPB)
        self.view.addSubview(wP)

    }

}

Это потому, что я использую частные ленивые переменные в представлении? Я в полной растерянности относительно того, почему фон изображения не обновляется.

Спасибо!

...