Я изменил свой ответ на примере.

я нажимаю «yourButton», или «yourButton2», или «yourButton3», каждый из них воспроизводит аудиофайл, и во время воспроизведения звука выбирается UIButton.

Я хотел бы, чтобы "yourButton4" реализовал метод других UIButton'ов подряд. (Сначала воспроизводится аудиофайл и установите выбранные «yourButton», затем «yourButton2» и «yourButton3»).

Однако, когда я нажимаю «yourButton4», «yourButton2» и «yourButton3» воспроизводятся одновременно с методом play (). Воспроизводит звук асинхронно.

        let url1 = Bundle.main.bundleURL.appendingPathComponent("music1.mp3")
        let url2 = Bundle.main.bundleURL.appendingPathComponent("music2.mp3")
        let url3 = Bundle.main.bundleURL.appendingPathComponent("music3.mp3")


        @IBOutlet weak var yourButton: customButton!
        @IBOutlet weak var yourButton2: customButton!
        @IBOutlet weak var yourButton3: customButton!
        @IBOutlet weak var yourButton4: customButton!

        fileprivate var player1:AVAudioPlayer?
        fileprivate var player2:AVAudioPlayer?
        fileprivate var player3:AVAudioPlayer?


        @IBAction func pushButton1(sender: UIButton) {
            Player(url: url1)
        }

        @IBAction func pushButton2(sender: UIButton) {
            Player1(url: url2)
        }

        @IBAction func pushButton3(_ sender: UIButton) {
            Player2(url: url1, url2: url2, url3: url3)
        }



        func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
            if (player === player1) {
                yourButton.isSelected = false
            } else if (player === player2) {
                yourButton2.isSelected = false
            } else if (player === player3) {
                yourButton.isSelected = false
                player2!.play()
                yourButton2.isSelected = true
                player2!.play()
                yourButton3.isSelected = true
                player1!.play()
            }
        }

        func Player(url: URL) {
            do {
                try player1 = AVAudioPlayer(contentsOf:url)
                player1!.play()
                yourButton.isSelected = true
                player1!.delegate = self
            } catch {
                print(error)
            }
        }

        func Player1(url: URL) {
            do {
                try player2 = AVAudioPlayer(contentsOf:url)
                player2!.play()
                yourButton2.isSelected = true
                player2!.delegate = self

            } catch {
                print(error)
            }
        }

        func Player2(url: URL, url2: URL, url3: URL) {
            do {
                try player3 = AVAudioPlayer(contentsOf:url)
                try player2 = AVAudioPlayer(contentsOf: url2)
                try player1 = AVAudioPlayer(contentsOf: url3)
                player3!.play()
                yourButton.isSelected = true
                player3!.delegate = self
                player2!.delegate = self
                player1!.delegate = self
            } catch {
                print(error)
            }
        }

Ответы на вопрос(2)

Ваш ответ на вопрос