【问题标题】:Play Sounds in the Project with Collection View Cell Buttons - Swift使用集合视图单元格按钮在项目中播放声音 - Swift
【发布时间】:2017-12-11 17:44:30
【问题描述】:

我正在尝试在我的项目文件中播放声音,当点击一个按钮时。

Button 连接到一个 CollectionViewCell,它正在重复,所以我无法在我的 ViewController 上创建插座。

相反,我将一个动作插座放到我的 ViewController 中,以便在点击按钮时播放声音。

let musicFile = Bundle.main.path(forResource: "\(soundNames["\(sender.currentTitle)"])", ofType: "mp3")

我在这里要做的是;我的按钮已经根据我之前创建的数组命名了,所以如果我能得到按钮的名称,那就确定我的项目中有一个.mp3文件,它会播放。

但上面提供的代码行给了我以下错误:

Cannot subscript a value of type '[String]' with an index of type 'String'

我怎样才能做到这一点?如果需要,我可以提供更多代码。

提前致谢。

【问题讨论】:

  • 该错误与问题无关。与声音、音频播放器、集合视图、单元格、视图控制器等无关。问题是纯粹的基本 Swift:soundNames 是一个数组,但你试图假装它是一个字典。就是这样。
  • 试试这个let musicFile = Bundle.main.path(forResource: sender.currentTitle, ofType: "mp3")
  • "我的按钮已经根据我之前创建的数组命名了" 这就是那个数组。展示它是如何声明的以及你是如何创建它的。
  • @AshvinGudaliya 非常感谢!我太笨了,现在可以工作了

标签: swift xcode button uicollectionviewcell avaudioplayer


【解决方案1】:

摆脱"\(...)" 符号。你不是在这里打印;您正在传递一个实际的字符串。直接使用实际值来形成该字符串。这种事情可能会奏效:

let index = 0 // getting the _real_ number is the issue, perhaps
let title = soundNames[index]
let musicFile = Bundle.main.path(forResource: title, ofType: "mp3")

但实际上,这完全取决于soundNames 是如何构造的,而您没有展示。

【讨论】:

  • 它工作得很好,很感激。 Ashvin 的评论也很有用。
猜你喜欢
  • 2023-03-28
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多