UITabBarControllerにて、それぞれのViewで異なる効果音を鳴らす
storyboardで生成したUITabBarControllerを用いて、それぞれのViewで異なる効果音を鳴らし、TabBarをタップすると、他のViewに遷移したときに元いたViewの効果音を止める、という動作を書きたいのですが、
とりあえず分かっていることは「viewDidLoadに効果音再生のコードを書く」ということだけで、
前の質問(UITabBarControllerでの切り替えに応じた処理について(Swift)、TabBarItemのボタンの原理はイマイチよく理解できませんでした。
(前の質問で言うと tabBarController.tabBar.delegate = self
で「delegateというクラスは存在しない」と表示され、つまづきました。)
storyboardでのView内では一つしかTabBarItemが表示されていないので、該当する全てのViewに同じコードを書かなければならないのですか?
UITabBarItemにActionがあれば楽なのですが……
import UIKit
import AVFoundation
class HomeView: UIViewController, AVAudioPlayerDelegate, UITabBarDelegate {
//サウンドの変数宣言
var myTabSound: AVAudioPlayer!
@IBOutlet weak var myTabBar: UITabBarItem!
override func viewDidLoad() {
super.viewDidLoad()
myTabBar.tabBar.delegate = self
//↑ここでつまづき、他に思いつくdelegateを含むコードを書いてもエラーになる
//サウンドのソースコード生成
let soundFilePath: NSString = NSBundle.mainBundle().pathForResource("effect8", ofType: "mp3")!
let fileURL : NSURL = NSURL(fileURLWithPath: soundFilePath)!
//AVAudioPlayerのインスタンス化
myTabSound = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
//AVAudioPlayerのデリゲートをセット
myTabSound.delegate = self
}
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem!) {
if(item.tag == 1){
//効果音を鳴らす
myTabSound.play()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
お詳しい方がいましたら、どうか回答宜しくお願い致します。