2016-03-08 59 views
-3

我已經在表格視圖中顯示iTunes音樂庫的所有歌曲。現在,我想在用戶點擊它時立即在表格視圖中播放選定的歌曲。播放iOS中的表格視圖中顯示的歌曲

這裏是我的代碼:

import UIKit 
import MediaPlayer 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
    @IBOutlet var table: UITableView! 

    //Create an array with some elements for the table view rows 
    var myMusicPlayer = MPMusicPlayerController() 
    var allSongsArray: [MPMediaItem]! 
    let songsQuery = MPMediaQuery.songsQuery() 
    var abcArray = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z", "#"] 

    //Define the amount of sections in table view 
    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return abcArray.count 
    } 

    //Assign the amount of elements in the array to the amount of rows in one section 
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return allSongsArray.count 
    } 

    //Set up each element in abcArray as title for section 
    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
     return self.abcArray[section] as String 
    } 

    //Set up the Index Search 
    func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]? { 
     return abcArray 
    } 

    //Assign each element in the array a row in table view 
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     var cell = tableView.dequeueReusableCellWithIdentifier("cell") 
     var items = allSongsArray[indexPath.row] 

     cell?.textLabel?.text = items.title 
     cell?.detailTextLabel?.text = items.artist 
     var imageSize = CGSizeMake(100, 100) 
     cell?.imageView?.image = items.artwork?.imageWithSize(imageSize) 

     return cell! 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.allSongsArray = songsQuery.items! as [MPMediaItem] 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 
+0

什麼是你的問題?你有什麼問題?您是否嘗試過任何代碼來播放歌曲或處理行選擇? – rmaddy

+0

其實我不知道,哪一段代碼適合播放歌曲......? – Ruwen

回答

0

使用此參考

import UIKit 
import AVFoundation 



class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { 

    var player:AVAudioPlayer? 

    var audio = ["song1","song2","song3","song4"] 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     let table:UITableView = UITableView() 
     let frame = bounds() 
     table.frame = CGRectMake(0.0, 64.0, frame.size.width, frame.size.height - 64.0) 
     table.delegate = self 
     table.dataSource = self 
     table.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell") 
     self.view .addSubview(table) 

     // Do any additional setup after loading the view, typically from a nib. 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return audio.count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell 
     cell.textLabel?.text = self.audio[indexPath.row] 
     return cell 
    } 

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

//  let details = PlayerViewController(nibName:"PlayerViewController",bundle: nil) 
//  details.song = self.audio[indexPath.row] as String? 
//  self.navigationController!.pushViewController(details, animated: true) 

     player = setupAudioPlayerWithFile(audio[indexPath.row], type: "mp3") 
     player?.play() 

    } 


    func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer? { 
     //1 
     let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String) 
     let url = NSURL.fileURLWithPath(path!) 

     //2 
     var audioPlayer:AVAudioPlayer? 

     // 3 
     do { 
      try audioPlayer = AVAudioPlayer(contentsOfURL: url) 
     } catch { 
      print("Player not available") 
     } 

     return audioPlayer 
    } 




    func bounds() -> CGRect 
    { 
     return UIScreen.mainScreen().bounds 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


}