我正在尝试将按钮标签传递给我的多媒体文件名。
不幸的是,它不起作用。
想法是当我按下名为“cat”的按钮时,它将播放名为“cat”、“mp3”的文件名
如果我按下标签为“cow”的按钮,它将播放文件名为“cow”的声音。
所以我已经尝试了不同的变体,但我无法让它工作。如果大家有什么想法,请帮忙。
import UIKit
import AVFoundation
class ViewController: UIViewController {
var audioPlayer: AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
}
func playAudio() {
do {
self.audioPlayer = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("buttonName", ofType: "mp3")!))
self.audioPlayer.play()
} catch {
print("Error")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func playSound(sender: AnyObject) {
let buttonName = sender.currentTitle!
playAudio()
}
}
最佳答案
我不是 Swift 方面的专家,但我认为 dope LLVM 无法为您解决这些问题:
buttonName
作为局部变量,您没有将其传递给 playAudio()
(无论如何它不接受参数),它 100% 对我不起作用。 buttonName
至playAudio()
作为参数,您无法在函数范围内获取按钮名称。此外,您使用 "buttonName"
,这是一个 String
对象,甚至不是变量。没有名为 buttonName.mp3
的文件在你的包中,所以什么都不会发生(总是 print("Error")
)。 像这样的东西应该可以工作:(未经测试,但应该更相似)
import UIKit
import AVFoundation
class ViewController: UIViewController {
var audioPlayer: AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
}
func playAudio(buttonName: String!) {
do {
self.audioPlayer = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(buttonName, ofType: "mp3")!))
self.audioPlayer.play()
} catch {
print("Error")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func playSound(sender: AnyObject) {
let buttonName = sender.currentTitle!
playAudio(buttonName)
}
}
关于ios - 如何将按钮标题传递给多媒体文件名 Swift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875854/