2017-02-13 5 views
0

Player1 funktioniert gut, aber ich habe einen Fehler bei der Implementierung von Player2.Wie man audioPlayerDidFinishPlaying in einer Klasse verwendet

Wie sollte ich audioPlayerDidFinishPlaying ändern, damit es funktioniert? Hier

ist der Code für meine ViewController.swift:

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


    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) { 
    do { 
     try player1 = AVAudioPlayer(contentsOf:url) 
     try player2 = AVAudioPlayer(contentsOf: url2) 
     player1!.play() 
     yourButton.isSelected = true 
     player1!.delegate = self 
    } catch { 
     print(error) 
    } 
} 

Antwort

1

In audioPlayerdidFinishPlaying(_:successfully:) Sie haben eine else if -Klausel, die nie true werden wird:

} else if (player === player3) { 

player3 wird immernil sein, weil Du weist ihm nie etwas zu. Somit wird Ihr 3. Zweig in audioPlayerdidFinishPlaying(_:successfully:) niemals ausgeführt. Um diese Arbeit in Ihnen aktuelle Klasse Design zu machen, müssen Sie entweder:

  • Ändern der else if Klausel
  • Assign etwas player3
+0

ich bearbeitet haben sonst, wenn Ursache aber noch hat es nicht geklappt Gut. Willst du mir sagen, was das Problem ist? – risa8

Verwandte Themen