如何在第一首歌曲结束时自动播放tableview中的下一首歌曲

时间:2016-01-18 22:26:00

标签: ios arrays swift uitableview xcode7

我把歌曲放到一张桌子里,我希望当歌曲结束时在表格视图中播放下一首歌曲。>>

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {


    if  let audio=NSBundle.mainBundle().pathForResource( elmp3[indexPath.row] , ofType: "mp3")
    {
        let url=NSURL (fileURLWithPath: audio)

        do {


            player = try AVAudioPlayer (contentsOfURL: url)

        }

        catch{"erorr"}

当你在同一视图中按下cel歌曲播放时

这是阵列歌曲

var elmp3 = ["001","002","003","004","005","006","007","008","009","010","011","012","013","014","015","016","017","018","019","020","021","022","023","024","025","026","027","028","029"]

1 个答案:

答案 0 :(得分:1)

  1. selectedIndex 创建实例变量。
  2. didSelectRowAtIndexpath:方法中将 selectedIndex 更新为indexPath.row。
  3. 实施 AVAudioPlayerDelegate 方法并为 AVAudioPlayer 实例设置委托。
  4. audioPlayerDidFinishPlaying:回调方法中,增加selectedIndex并播放列表中的下一个音频。
  5. 以下是步骤:

    1

    var selectedIndex:Int = 0
    

    2

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    
    //Set selected index
    self.selectedIndex = indexPath.row
    
    //get audio file URL at index
    if  let audio=NSBundle.mainBundle().pathForResource( elmp3[self.selectedIndex] , ofType: "mp3")
    {
        let url=NSURL (fileURLWithPath: audio)
    
        do {
    
    
            player = try AVAudioPlayer (contentsOfURL: url)
            //Set delegate for AVAudioPlayer
            player.delegate = self
    
        }
    
        catch{"error"}
    
     }
    

    3。

    class AudioPlayerController:UIViewController, AVAudioPlayerDelegate{
    
    func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer,
                             successfully flag: Bool){
    
    if flag == true && self.selectedIndex < elmp3.count{
    
    //Increment current index
    ++ self.selectedIndex
     //Load audio at current index and play
     if  let audio=NSBundle.mainBundle().pathForResource( elmp3[self.selectedIndex] , ofType: "mp3")
    {
        let url=NSURL (fileURLWithPath: audio)
    
        do {
            player = try AVAudioPlayer (contentsOfURL: url)
            player.delegate = self
    
        }
    
        catch{"error"}
    
    
    }
    }
    }