任何人都可以幫助我。我搜索我的問題,仍然無法找出解決方案,我發現的一切都沒有格式化在迅速3.我試圖做一個切換播放和暫停一個UIBarButtonItem。每當播放按鈕被點擊時,我希望它播放該文件,同時將UIBarButtonItem更改爲暫停,反之亦然。如何使用UIBarbuttonItem切換播放和暫停
順便說一下,我已經從編輯器中將導航控制器嵌入到我的主視圖控制器中。
這是我的代碼片段。
import UIKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet weak var pausePlayBtn: UIBarButtonItem!
var audioPlayer = AVAudioPlayer()
override func viewDidLoad() {
super.viewDidLoad()
prepareMusic()
}
func prepareMusic() {
let path = Bundle.main.path(forResource: "SomeFileName", ofType: "TypeOfFile")!
do {
audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
audioPlayer.prepareToPlay()
} catch let err as NSError {
print(err)
}
}
@IBAction func togglePausePlay(sender: UIBarButtonItem) {
if !audioPlayer.isPlaying {
audioPlayer.play()
} else {
audioPlayer.stop()
}
}
}
我試過以下。
首先,我通過創建播放按鈕和暫停按鈕並將它們添加到我的togglePausePlay函數中來開始。
let playBtn = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: nil)
let pauseBtn = UIBarButtonItem(barButtonSystemItem: .pause, target: self, action: nil)
@IBAction func togglePausePlay(sender: UIBarButtonItem) {
if !audioPlayer.isPlaying {
audioPlayer.play()
pausePlayBtn = playBtn
} else {
audioPlayer.stop()
pausePlayBtn = pauseBtn
}
}
我試過的第二件事就是這個。
@IBAction func togglePausePlay(sender: UIBarButtonItem) {
if !audioPlayer.isPlaying {
audioPlayer.play()
self.navigationController?.navigationBar.topItem?.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: nil)
} else {
audioPlayer.stop()
self.navigationController?.navigationBar.topItem?.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .pause, target: self, action: nil)
}
}
這項工作在應用的開始,我會點擊該按鈕,第一次,一切都將工作的按鈕將變爲暫停和文件將啓動。但是,當我嘗試再次單擊它時,沒有任何反應,按鈕停留在暫停狀態,文件仍然繼續播放,直到我停止該項目。
任何幫助,將不勝感激。 :)
- !如果audioPlayer.isPlaying意味着,如果聲音是不是在玩在這裏你必須改變按鈕的暫停狀態,但你仍然didn't.You做這個 - :?self.navigationController .navigationBar.topItem .rightBarButtonItem =的UIBarButtonItem(barButtonSystemItem:.pause,目標:自,動作:無) –
圖莎爾夏爾馬我切換到的UIBarButtonItem(barButtonSystemItem:.play,目標:自,動作:無)當!audioPlayer.isPlaying。但問題仍然存在。 –
你可以作爲第一線,並添加audioPlayer.play()在其下方和try.Can你把。斷點並檢查它是在裏面? –