誰でも助けてくれますか?私は自分の質問を検索していますが、解決策を見つけられません。私が見つけたものはすべて即時にフォーマットされていませんでした。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 funcに追加することから始めました。
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
}
}
私が試したもう1つのことはこれでした。
@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オーディオは、ここで演奏されていない場合は、ボタンの一時停止状態を変更する必要がありますが、まだTHIS-をやっdidn't.You意味ならば!と:self.navigationController?.navigationBar.topItem?rightBarButtonItem = UIBarButtonItem(barButtonSystemItem:.pause、target:self、action:なし) –
Tushar Sharma UIBarButtonItemに切り替えます(barButtonSystemItem:.play、target:self、action:nil) when!audioPlayer.isPlaying。しかし、まだ問題は残っています。 –
これを最初の行として作成し、その下にaudioPlayer.play()を追加して試してみることができますか?ブレークポイントとそれが内部に入っていることを確認しますか? –