2017-12-11 14 views
-1

버튼을 두드리면 프로젝트 파일에서 사운드를 재생하려고합니다.콜렉션이있는 프로젝트에서 사운드를 재생합니다. 셀 버튼을 봅니다. Swift

버튼이 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'

어떻게이 일을 할 수 있습니까? 필요한 경우 더 많은 코드를 제공 할 수 있습니다.

미리 감사드립니다.

+0

오류는 질문과 관련이 없습니다. 사운드, 오디오 플레이어, 콜렉션 뷰, 셀, 뷰 컨트롤러 등과는 아무런 관련이 없습니다. 문제는 순수한 기본 Swift입니다 :'soundNames'는 배열이지만 여러분은 그것이 사전이라고 척하려고합니다. 그게 다야. – matt

+0

이것을보십시오'let musicFile = Bundle.main.path (forResource : sender.currentTitle, ofType : "mp3")' – AshvinGudaliya

+0

"내 버튼은 이미"그게 그 배열에 관한 전부입니다. 선언 된 방법과 작성 방법을 보여줍니다. – matt

답변

0

"\(...)" 표기법을 제거하십시오. 당신은 여기에 인쇄하지 않습니다; 당신은 실제 문자열을 전달하고 있습니다. 실제 값을 직접 사용하여 해당 문자열을 형성하십시오.

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 구축 방법에 따라 달라집니다 : 이런 종류의 아마 작동합니다.

+0

하지만 내 대답이 옳지 않다면, 그것을 받아들이지 마라. – matt

+0

그것은 큰 사람을 일하고, 그것을 평가. Ashvin의 의견도 유용했습니다. – emrepun