Установка изображения UIbutton из функции из другого класса - PullRequest
0 голосов
/ 20 июня 2019

Итак, у меня есть список песен, и когда я нажимаю на кнопку more, отображается SongDetailCell и вызывается функция setPlayPauseOnAppeaering() для выбранной песни.

Эта функция либо устанавливает воспроизведение, либо приостанавливаетзначок в зависимости от оператора if.По какой-то причине значок паузы не отображается, хотя печатаются правильные журналы консоли.Например, когда «играет с spotify sample» , кнопка не устанавливается на паузу, даже если она определенно должна быть.Кто-нибудь знает, что я здесь делаю не так.

class SongList: UICollectionViewCell    {

    @objc func moreButtonTap(gesture: UITapGestureRecognizer)  {

        var indexPath = getIndexPathFromRecognizer(gesture: gesture)

        let songDetailView = SongDetailCell()
        let song = self.songsArray[indexPath.item]
        songDetailView.song = song
        songDetailView.setPlayPauseOnAppearing()
    }
}

class SongDetailCell: UICollectionViewCell {
    var song: Song! 

    let playPauseButton: UIButton = {
        let button = UIButton()
        button.setImage(UIImage(named: "play-button-large"), for: .normal)
        button.translatesAutoresizingMaskIntoConstraints = false
        button.tintColor = UIColor.brandBlack()
        button.contentMode = .scaleToFill
        return button
    }()

func setPlayPauseOnAppearing()    {

    func setPlayButton()  {
        playPauseButton.setImage(UIImage(named: "play-button-large")?.withRenderingMode(.alwaysTemplate), for: .normal)
    }
    func setPauseButton()    {
        playPauseButton.setImage(UIImage(named: "pause-button-large")?.withRenderingMode(.alwaysTemplate), for: .normal)
    }

    if SongPlayer.shared.doesPreviewExist(spotifyPreviewUrl: spotifyURL, iTunesPreviewUrl: itunesURL)   {
        if SongPlayer.shared.player.timeControlStatus == .paused    {
            if SongPlayer.shared.previewUrl == spotifyURL {
                setPlayButton()
                print("paused with Spotify sample")
            } else if SongPlayer.shared.previewUrl == itunesURL {
                setPlayButton()
                print("paused with iTunes sample")
            }
        }   else if SongPlayer.shared.player.timeControlStatus == .playing {
            if SongPlayer.shared.previewUrl == spotifyURL {
                setPauseButton()
                print("playing with Spotify sample")
            } else if SongPlayer.shared.previewUrl == itunesURL {
                setPauseButton()
                print("playing with iTunes sample")
            }
        }   else    {
                print("no audio sample")
        }
    }
}
}

1 Ответ

0 голосов
/ 20 июня 2019

Вы создаете кнопку (playPauseButton).Но ни один из вашего кода никогда не помещает эту кнопку в интерфейс.Таким образом, вы никогда не увидите это.Вы просто меняете значок, но кнопка где-то в памяти выключена.

Ячейка параллельна.Вы говорите

let songDetailView = SongDetailCell()

Но это просто создает новую клетку, где-то в космосе.Это не ячейка, которая на самом деле присутствует в интерфейсе.То, что вы делаете с ним, не имеет видимого эффекта (а затем оно просто исчезает в клубе дыма).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...