2015-04-08 4 views
1

Я хочу изменить кнопку воспроизведения на кнопку паузы при нажатии. И наоборот.Как переключить изображения кнопок при нажатии?

Вот мой код:

вар toggleState = 1

@IBAction func playPauseButton(sender: AnyObject) { 

     var playBut = UIButton() 

    if toggleState == 1 { 

     player.play() 

     toggleState = 2 

    } else { 

     player.pause() 

     toggleState = 1 
    } 

} 

Я пытался (и не везло с) добавление:

@IBAction func playPauseButton(sender: AnyObject) { 

    var playBtn = sender as UIButton 

    if toggleState == 1 { 

     player.play() 

     toggleState = 2 

     playBtn.setImage(UIImage(named:"play.png"),forState:UIControlState.Normal) 

    } else { 

     player.pause() 

     toggleState = 1 

     playBtn.setImage(UIImage(named:"pause.png"),forState:UIControlState.Normal) 

    } 

} 

Все это делали, было крушение моих приложение, когда я нажимаю play. Может ли кто-нибудь мне помочь?

+0

Если player.playing {....} –

ответ

1

Логика, которую вы пытались, должна была сработать. Единственное подозрительное, что есть актеры, но Swift позволяет устранить его, объявив параметр отправителя точного типа:

let imgPlay = UIImage(named:"play.png") 
let imgPause = UIImage(named:"pause.png") 

@IBAction func playPauseButton(playBtn: UIButton) { 
    if toggleState == 1 { 
     player.play() 
     toggleState = 2 
     playBtn.setImage(imgPlay,forState:UIControlState.Normal) 
    } else { 
     player.pause() 
     toggleState = 1 
     playBtn.setImage(imgPause,forState:UIControlState.Normal) 
    } 
} 

Я также переехал создание изображения из обработчика, чтобы избежать выполнения той же задачи неоднократно.

+0

Это все еще сбой. Я получаю SIGABRT в классе AppDelegate: UIResponder, UIApplicationDelegate { –

+0

@BenKelsey Остановится ли он, если вы удалите вызовы setImage из обеих ветвей? – dasblinkenlight

+0

Если вы хотите удалить все после .setImage на обеих линиях, то да, он перестанет рушиться. –

Смежные вопросы