![](/img/trans.png)
[英]how to change a UILabel of a UIViewController from another UIViewController
[英]How to change NSIndexPath in another UIViewController in swift
我从UITableViewController
和特定文件的NSIndexPath
获得NSIndexPath
数组。 我从NSIndexPath
数组的document文件夹中获取mp3文件,并从NSIndexPath
文件的UITableViewCell中的选定行中获取特定文件。
我想切换mp3文件,因为它需要更改播放音乐的UIViewController中的NSIndexPath。 还是从文档文件夹切换mp3文件的方法不同?
UITableViewController
代码
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var playerVC = (segue.destinationViewController as! UINavigationController).topViewController as! PlayMusicViewController
var indexPath = tableView.indexPathForSelectedRow()
var nameOfObjectForPass = listOfMP3Files![indexPath!.row] // default it's name and
var fileManager = NSFileManager.defaultManager()
var wayToFile = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
var passMusicFileURL: NSURL? // for pass mp3
if let documentPath: NSURL = wayToFile.first as? NSURL {
let musicFile = documentPath.URLByAppendingPathComponent(nameOfObjectForPass)
println(musicFile)
passMusicFileURL = musicFile
}
var currentTrackIndex = tableView.indexPathForSelectedRow()!
var allIndexTable = tableView.indexPathsForVisibleRows()! as! [NSIndexPath]
if segue.identifier == "listenMusic" {
playerVC.nameMusicFile = nameOfObjectForPass // name
playerVC.mp3URL = passMusicFileURL
// test
playerVC.currentIndex = currentTrackIndex
playerVC.allIndex = allIndexTable
}
}
UIViewController
代码
var currentIndex: NSIndexPath!
var allIndex = [AnyObject]() as! [NSIndexPath]
func playNextSound() {
println("index \(currentIndex)")
println("all object \(allIndex)")
var indextFound = find(allIndex, currentIndex)
println("index found \(indextFound)")
}
播放音乐的代码是
func playMusic() {
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) // == true
AVAudioSession.sharedInstance().setActive(true, error: nil)
var error: NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: mp3URL, error: &error)
// audioPlayer.prepareToPlay()
if currentPause == nil {
} else {
audioPlayer.currentTime = currentPause
}
//
audioPlayer.volume = 0.5
audioPlayer.play()
}
我在控制台中得到以下结果
索引{length = 2,path = 0-0}是当前对象
它是文档文件夹中的所有对象[{length = 2,path = 0-0},{length = 2,path = 0-1}]
var newURL: NSURL!
@IBAction func nextTrack(sender: UIButton) {
println("touched next")
var nowRow: Int = self.currentRow
var maxCount = self.arrayOfMP3.count-1 // -1
if nowRow < maxCount {
nowRow = self.currentRow++
println("plus")
} else if nowRow == arrayOfMP3.endIndex {
nowRow = maxCount
println("equals")
}
// for play/pause button setting
currentPause = nil
//println("current pause\(currentPause)")
next = false
//
println("current row \(currentRow)")
println("end index \(arrayOfMP3.endIndex)")
var nextTrack = arrayOfMP3![nowRow]
var nextDirectory = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
if var nextURL: NSURL = nextDirectory.first as? NSURL {
newURL = nextURL.URLByAppendingPathComponent(nextTrack)
}
var nameArtist: String!
var nameSong: String!
var imageString: NSData!
var itemPlayer = AVPlayerItem(URL: newURL)
var listMetaData = itemPlayer.asset.commonMetadata as! [AVMetadataItem]
for item in listMetaData {
if item.commonKey == "title" {
nameSong = item.stringValue
}
if item.commonKey == "artist" {
nameArtist = item.stringValue
}
if item.commonKey == "album" {
item.stringValue
}
if item.commonKey == "artwork" {
imageString = item.dataValue
}
}
nameLabel?.text = "\(nameArtist) \(nameSong)"
if imageString != nil {
imageView?.image = UIImage(data: imageString)
} else {
imageView?.image = nil
}
tapButtonPlay = false
playMusic()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.