Xcode 如何让UIButton播放UITable中选择的相应音频片段?
我的故事板中有两个场景,第一个简单地包含一个由一系列单词填充的UItable。当选定一个单元格时,我的应用程序将转到第二个场景,该场景包含一个标签(该标签包含其相应“wordTitle”的给定内容,请参见下文)和一个按钮。在我的Supporting files文件夹中,我有一个音频文件,代表UITable中的每个条目。我有一个名为Word的自定义类,它具有“wordTitle”属性。我在viewcontroller中创建了许多Word对象Xcode 如何让UIButton播放UITable中选择的相应音频片段?,xcode,uitableview,uibutton,avfoundation,viewcontroller,Xcode,Uitableview,Uibutton,Avfoundation,Viewcontroller,我的故事板中有两个场景,第一个简单地包含一个由一系列单词填充的UItable。当选定一个单元格时,我的应用程序将转到第二个场景,该场景包含一个标签(该标签包含其相应“wordTitle”的给定内容,请参见下文)和一个按钮。在我的Supporting files文件夹中,我有一个音频文件,代表UITable中的每个条目。我有一个名为Word的自定义类,它具有“wordTitle”属性。我在viewcontroller中创建了许多Word对象 words = [[NSMutableArray all
words = [[NSMutableArray alloc] init];
//custom Word class object
Word * wrd = [[Word alloc]] init];
wrd.wordTitle = @"One";
[words addObject:wrd];
wrd = [[Word alloc]] init];
wrd.wordTitle = @"two";
[words addObject:wrd];
// and so on.
每次我在UITable中选择一个单元格时,第二个场景中的标签都会正确更新。如何设置按钮,以便在第二个场景中按下按钮时播放相应的音频文件?现在,使用新的AVFoundation AVAudioEngine,整个过程变得容易多了。基本上,您将创建一个音频引擎和一个AVAudioPlayerNode,并将音频文件加载到播放器中并播放它
var error: NSError?
let engine = AVAudioEngine()
let playerNode = AVAudioPlayerNode()
//set up the audiofile
var audioFileUrl : NSURL?
var audioFile : AVAudioFile?
var audioFormat :AVAudioFormat?
将audiplayernode连接到发动机
let mainMixer = engine.main
MixerNode
engine.attachNode(playerNode)
//wire it up
engine.connect(playerNode, to: mainMixer, format: audioFormat)
//Gentlemen start your engine
engine.startAndReturnError(&error)
通常情况下,要将音频文件加载到播放机中,您需要使用以下方法:
func loadAudioFileInotPlayer(){
audioFileUrl = NSURL(fileURLWithPath:"/somepath/filename")
audioFile = AVAudioFile(forReading: audioFileUrl, commonFormat: .PCMFormatFloat32, interleaved: true, error: &error)
audioFormat = audioFile!.processingFormat
}
func Play (){
//Load the audio file into the player node
playerNode.scheduleFile(audioFile, atTime: nil, completionHandler: nil)
playerNode.play()
println("Play was pressed")
}
您需要为audioFileUrl中的路径创建一个字符串,该路径指向要加载该特定文件的文件名。我希望这有帮助