2016-06-21 51 views
-2

我已经尝试将操作链接到同一个按钮,但这完全停止了按钮。如果我创建一个单独的按钮,我可以使用相同的代码工作:使用相同的按钮来播放/暂停和AVFoundation中的音频

@IBAction func Play(sender: AnyObject) { 
    SoundPlayer.play() 
} 

@IBAction func stop(sender: AnyObject) {   
    SoundPlayer.stop() 
} 

我还需要音频才能循环。

使用Nirav代码:

class ViewController: UIViewController { 

    var SoundPlayer:AVAudioPlayer = AVAudioPlayer() 

    @IBOutlet var btnPlay: UIButton! 
    @IBOutlet var btnStop: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let FileLocation = NSBundle.mainBundle().pathForResource("Aspirin", ofType: ".mp3") 


     do { 
      SoundPlayer = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: FileLocation!)) 


      try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient) 
      try AVAudioSession.sharedInstance().setActive(true) 

     } 

     catch { 
      print(error) 
     } 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    @IBAction func btnTap(sender: UIButton) { 
     if (sender == self.btnPlay) { 
     } 
     else if (sender == self.btnStop) { 
     } 
    } 
} 

1 - 截图故事板

回答

0

你可以做到这一点只需创建两个按钮的IBOutlet这样

@IBOutlet var btnPlay: UIButton! 

现在结合这个动作既按钮

@IBaction func btnTap(sender: UIButton) { 
    if (!sender.selected) { 
     SoundPlayer.play() 
    } 
    else { 
     SoundPlayer.stop() 
    } 
    sender.selected = !sender.selected 
} 

希望这会帮助你

+0

获取NS无效的参数异常(请参阅原始帖子中的修订代码) –

+0

在哪里得到它? –

+0

按下模拟器中的按钮 –

相关问题