Xcode 如何让UIButton播放UITable中选择的相应音频片段?

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

我的故事板中有两个场景,第一个简单地包含一个由一系列单词填充的UItable。当选定一个单元格时,我的应用程序将转到第二个场景,该场景包含一个标签(该标签包含其相应“wordTitle”的给定内容,请参见下文)和一个按钮。在我的Supporting files文件夹中,我有一个音频文件,代表UITable中的每个条目。我有一个名为Word的自定义类,它具有“wordTitle”属性。我在viewcontroller中创建了许多Word对象

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中的路径创建一个字符串,该路径指向要加载该特定文件的文件名。我希望这有帮助