2016-10-18 5 views
0

私はSwift 3を使用しています。コレクションビューを7つのセクションで設定しました。ユーザーがセル(ボタン)をタップすると、特定のサウンドが一連のサウンドから再生されます。このコレクションビューを修正する方法と配列に問題がありますか?

したがって、コレクションビュー内のセクションを分割して特定のサウンド配列に一致させるにはどうすればよいですか?ユーザーがセクション2のセル(ボタン)をタップしたとき、ユーザーが再生されsoundArray2の音collectionView

2)のセクション1のセル(ボタン)をタップすると、インスタンス

1)のための

が再生されsoundArray1に聞こえますユーザーはセクション7

すべての方法までcollectionViewのセクション3で細胞(ボタン)をタップしたときcollectionView

3)で再生されますsoundArray3に聞こえますここで210

ユーザが音はサウンドファイルのアレイ1 cellButton

@IBAction func cellButton(_ sender: AnyObject) { 
let sound = (sender as! UIButton).tag 
self.setupAudioPlayer(file: Sounds[sound] as NSString, type: ".m4a") 
self.soundPlayer.play()} 

をタップしたときに現在のコードです。しかし、この一連のサウンドファイルは現在collectionViewのすべてのセクションで再生されています。 collectionViewの各セクションに一致するサウンドの各配列を分割する方法を考えることができません。

+0

サウンド配列の配列を使用し、セクション番号を使用して正しいサウンド配列とセル番号を抽出し、その配列から正しいサウンドを取得しますか? – NSNoob

+0

UIButtonのタグをどのように設定していますか? – NSNoob

答えて

0

は、あなたのサウンドに、配列の配列を持っている必要があります。配列の各要素がcollectionViewのセクションを表し

let allSounds = [soundArray1, soundArray2, soundArray3] 

セクション0の最初の要素であるサウンドを得るために、あなたが行くだろう:

let soundArray = allSounds[0] // Get section 0 
let sound = soundArray[0] // Get sound at index 0 

またはセクション2にインデックス7でサウンドを得るために、あなたが行くだろう:

let soundArray = allSounds[2] // Get section 2 
let sound = soundArray[6] // Get sound at index 7 
+0

ボタンのタグは、indexPath.sectionとindexPath.row thoの両方を表す必要があります – NSNoob

+0

各セクションに同じ数のボタンがあると仮定すると、整数計算を使用するとかなり簡単になります: 'tag%no-ofセクション内のアイテム/タグなし/ –

+0

しかし、もっと良い方法は、ボタンの代わりに 'didSelectCellAtIndexPath'を使うか、コントローラ内にコールバックするためにセル内のブロックを使うことです –

関連する問題