如何使 UIButton 从 UITable 中的选择中播放相应的音频剪辑?

Posted

技术标签:

【中文标题】如何使 UIButton 从 UITable 中的选择中播放相应的音频剪辑?【英文标题】:How to make UIButton play corresponding audio clip from selection in UITable? 【发布时间】:2014-10-08 13:16:04 【问题描述】:

我的故事板中有两个场景,第一个简单地包含一个由单词数组填充的 UItable。当一个单元格被选中时,我的应用程序会转到包含标签(给出其相应“wordTitle”的内容,见下文)和一个按钮的第二个场景。在我的支持文件文件夹中,我有一个音频文件代表我的 UITable 中的每个条目。我有一个名为 Word 的自定义类,它有一个“wordTitle”属性。我在视图控制器中创建了许多 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 中选择一个单元格时,都会正确更新第二个场景中的标签。如何设置按钮,以便在第二个场景中按下它时播放相应的音频文件?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于如何使 UIButton 从 UITable 中的选择中播放相应的音频剪辑?的主要内容,如果未能解决你的问题,请参考以下文章

表内的 UIButton 未触发

如何使单元格中的 UIButton 在被点击后立即保持特定状态?

如何在 UITableView Cell 中以编程方式创建 n 个 UIButton?

UIButton 在 iOS 7 中无法正常工作

从 firebase 数据库中检索数据并在 Objective-C 中的 UITable 中显示

Swift uiview 在 uitable 之上