2016-07-26 13 views

Antwort

0

Sie haben einen Delegierten zu setzen:

scalePlayer.delegate = self

Dann implementieren Sie diesen Rückruf

func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) { 
    //set the current time here 
    scalePlayer.currentTime = 0 
} 

aktualisieren

Hier ist ein Beispiel, wie man dies umsetzen kann (basierend auf Ihrem Code):

class MyViewController: UIViewController, AVAudioPlayerDelegate { 

    @IBOutlet weak var play: UIButton! 

    private var scalePlayer: AVAudioPlayer? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let path = NSBundle.mainBundle().pathForResource("cmajor", ofType: "wav")! 
     let url = NSURL(fileURLWithPath: path) 
     scalePlayer = try? AVAudioPlayer(contentsOfURL: url) 

     scalePlayer?.delegate = self 
    } 

    @IBAction func onPlayButtonClick(sender: UIButton) { 
     play.enabled = false 
     scalePlayer?.prepareToPlay() 
     scalePlayer?.enableRate = true 
     scalePlayer?.rate = 0.75 
     scalePlayer?.play() 
    } 

    func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) { 
     scalePlayer?.currentTime = 0 
    } 
} 
+0

Könnten Sie bitte ins Detail gehen? Ich bin neu, und ich weiß nicht, wo ich diese Codezeilen einfügen soll und wie die Delegierten genau arbeiten. –

+0

aktualisiert meine Antwort – fiks

+0

Es kompiliert und dann sofort mit diesem Fehler abstürzt: schwerwiegender Fehler unerwartet gefunden Null beim Entpacken ein optionaler Wert –