Звук останавливается при навигации по ViewControllers - PullRequest
0 голосов
/ 18 января 2020

В настоящее время я пытаюсь создать приложение в Xcode, которое будет работать как приложение c. В настоящее время у него есть 2 ViewControllers, и это выглядит так. ViewControllers Код для MusicViewController:

import UIKit
import AVFoundation

class MusicViewController: UITableViewController, UINavigationControllerDelegate {

    let songs = ["Sugar", "Da-i Foale", "Kush"]
    var player = AVAudioPlayer()

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self
    }

    override func viewWillAppear(_ animated: Bool) {
        navigationController?.navigationBar.isHidden = false
    }

    //MARK: - Data Delegate Methods
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return songs.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "SongCell", for: indexPath)

        cell.textLabel?.text = songs[indexPath.row]

        return cell
    }

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)

        let path = Bundle.main.path(forResource: songs[indexPath.row], ofType: "mp3")!
        let url = URL(fileURLWithPath: path)

        do {
            player = try AVAudioPlayer(contentsOf: url)
            try AVAudioSession.sharedInstance().setCategory(.playback)
            player.play()
        } catch {
            print(error)
        }
    }
}

Идея состояла в том, чтобы перемещаться по другим ViewControllers без музыки c, чтобы остановиться, но это не работает. Я должен сказать, что на данный момент я не использую prepareForSegue() или другие подобные методы. Это потому, что ViewController разрушается после того, как вы отклонили его с помощью кнопки «Назад» на панели навигации? Спасибо за внимание, жду ваших ответов.

1 Ответ

0 голосов
/ 18 января 2020

Вероятно, ваши экземпляры игрока освобождаются, когда ViewController переходит в фоновый режим.

Вы должны поместить экземпляр AVAudioPlayer в AppDelegate.

...