看板 MacDev 關於我們 聯絡資訊
建立一個mp3名稱的array,順序跟你的textView要用的array一樣 -> @[@"song1",@"song2"]; 在cellForItemAtIndexPath裏面給每一個button一個編號 -> button.tag = indexPath.row 每個button的selector都是play: 在你的play method裏面 UIButton *button = (UButton *)sender; int tag = button.tag 再從mp3 array拿檔名出來 NSString *fileName = [mp3Array objectAtIndex:button.tag]; 路徑再用pathOfResource建立,最後再用AVAudioPlayer播放 理論上是沒問題,你跑跑看XD ※ 引述《crazyni68 (Arni)》之銘言: : 各位好,我第一次在本版發文,也是Xcode初學者,如果有表達不好的地方敬請見諒。 : 目前是在StoryBoard拉出UICollectionViewController,CollectionView的cell上有加上 : TextView與Butoon。 : 程式碼上 numberOfItemSection中 回傳我textView要使用的array=> : return array1.count 與 cellForItemAtIndexPath中 定義cell識別碼, : 重複使用的cell => dequeueReusableCellWithReuseIdentifier : Run程式後,也成功的複製出數個cell,當然每個cell上面也都有TextView與Button。 : TextView部分是沒問題(每個cell成功依照array順序顯示內容),主要問題是需要點擊不 : 同的Button會播放各自所屬的mp3檔[第一個cell上的Button播放第1個mp3檔, : 第2個cell上的Button播放第2個mp3檔...] : 原本也是想說和TextView一樣用array存mp3檔名稱,然後使用AVAudioPlayer來播放,結 : 果發現路徑上只能放NSString型態,且他好像只能播單首歌 : (pathForResource:@"歌名"ofType@"mp3") : 是不是要將NSArray轉NSString呢? : 最後Run完都不成功(卡死,要不然就是點擊Button無反應) : 那為了能先Run成功,所以我改成執行後每個Cell的Butoon點擊後都只能播放同一首mp3檔 : (AVAudioPlayer這段程式碼是放在CellForItemAtIndex裡面,檔名直接給一個mp3檔) : 有試過didSelectItemAtIndexPath但可能不太熟也不會使用,打完後失敗也只能默默的把 : 它註解起來XD : Button部分就是放 : -(IBAction)play:(id)sender : { : if (player) : { : if (![player isPlaying]) : { : [player play]; : } : } : } : 如有需要程式碼比較好觀看我再放該.m檔的連結上來。 : 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.13.72.16 ※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1406969958.A.2BC.html ※ 編輯: kiii210 (163.13.72.16), 08/02/2014 16:59:58
crazyni68:謝謝,剛有測試過,不過每個Button還是會放同一首mp3檔 08/02 17:35
kiii210:那應該去看看AVAudioPlayer吧 08/02 17:35
crazyni68:and tag警告說unuse 所以我改objectAtIndex:tag這樣 08/02 17:35
crazyni68:不過還是和上述一樣XDD 08/02 17:36
crazyni68:好,我去看看~:D 08/02 17:37
tag那邊只是打太快,直接用button.tag就可以了 AVAudioPlayer剛剛看了一下,想播放不同的聲音檔案,應該是要重新init一次~ ※ 編輯: kiii210 (163.13.72.16), 08/02/2014 17:41:51
crazyni68:我可以寄站內信(該.m程式)給您嗎?說不定是我自己誤會(打 08/02 17:49
crazyni68:錯)程式部分,如果不方便的話沒關係XD 08/02 17:50
crazyni68:程式碼部分是存成RTF檔 08/02 17:51