У меня есть 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)
}
}
Это потому, что я использую частные ленивые переменные в представлении? Я в полной растерянности относительно того, почему фон изображения не обновляется.
Спасибо!