我在表格视图中显示了iTunes音乐库的所有歌曲。现在,我想在用户点击它时立即在表格视图中播放所选歌曲。
这是我的代码:
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 :(得分: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.
}
}