Ich habe eine Sammlungsansicht, die Vollbildzellen anzeigt. Und wenn Zellen automatisch nacheinander scrollen. Beim Scrollen spielt eine Audiodatei abhängig von der Indexnummer der Zelle. Es gibt kein Problem mit diesem Teil. Aber mein Problem ist, dass ich eine Zurück-Taste habe und wenn der Benutzer darauf tippt, geht der Benutzer zum Hauptansicht-Controller. Und dieser Zurück-Knopf hat einen Abwickel-Übergang. Wenn ich auf die Zurück-Schaltfläche tippe, gehe ich zum Hauptansicht-Controller, aber die Audiodatei, die abgespielt wird, wenn die Zellen der Sammlungsansichtszelle weiterlaufen, wird immer wieder abgespielt.Unwind segue und Audio spielt weiter
Ich habe dies versucht, aber es funktioniert nicht
@IBAction func backBtnPressed(_ sender: UIButton) {
if audioPlayer1.isPlaying == true {
audioPlayer1.stop()
}
Und ich alles nenne innen viewDidLoad()
override func viewDidLoad() {
startTimer()
}
Dies ist der Teil scrollt automatisch in die nächste Zelle behandelt. Und ich rufe alphabetSoundPlay()
Funktion hier.
func scrollToNextCell(){
let cellSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
let contentOffset = myCollectionView.contentOffset
myCollectionView.scrollRectToVisible(CGRect(x: contentOffset.x + cellSize.width, y: contentOffset.y, width: cellSize.width, height: cellSize.height), animated: true)
alphabetSoundPlay()
}
3-Sekunden-Verzögerung für
Scrollenfunc startTimer() {
_ = Timer.scheduledTimer(timeInterval: 3.0,
target: self,
selector: #selector(scrollToNextCell),
userInfo: nil,
repeats: true)
}
Dies ist die Funktion findet heraus, welche Zelle sie ist, und dem Audio-Datei wird
func alphabetSoundPlay() {
let currentRow = self.myCollectionView.indexPath(for: self.myCollectionView.visibleCells[0])?.row
if currentRow == 0 {
do
{
audioPlayer1 = try AVAudioPlayer(contentsOf:alphabetSound1!, fileTypeHint:nil)
}
catch
{
return print("file not found")
}
audioPlayer1.prepareToPlay()
audioPlayer1.play()
} else if currentRow == 1 {
do
{
audioPlayer2 = try AVAudioPlayer(contentsOf:alphabetSound2!, fileTypeHint:nil)
}
catch
{
return print("file not found")
}
audioPlayer2.prepareToPlay()
audioPlayer2.play()
}else if currentRow == 2 {
do
{
audioPlayer3 = try AVAudioPlayer(contentsOf:alphabetSound3!, fileTypeHint:nil)
}
catch
{
return print("file not found")
}
audioPlayer3.prepareToPlay()
audioPlayer3.play()
}else if currentRow == 3 {
do
{
audioPlayer4 = try AVAudioPlayer(contentsOf:alphabetSound4!, fileTypeHint:nil)
}
catch
{
return print("file not found")
}
audioPlayer4.prepareToPlay()
audioPlayer4.play()
}