質問: 1){ //効果音を鳴らす myTabSound.play() } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } ``` お詳しい方がいましたら、どうか回答宜しくお願い致します。
回答: UITabBarのDelegate先は、UITabBarControllerに固定されているようです。プログラムで変更すると、アプリがエラーで落ちます。 1. なので、UITabBarControllerのサブクラスを作り、Storyboard上でTabBar Controllerのクラスを変更。 Delegateメソッドは、UITabBarControllerサブクラスに記述。 2. UITabBarControllerが、UITabBarDelegateを実装しているので、サブクラスに再実装する必要はなし。 3. Delegateメソッドにはoverrideオプションをつける。 私の考えでは、UITabBarDelegateを使わずに、**UITabBarControllerDelegate**を使って、TabBar Itemタップ時の処理を行うほうが、いいでしょう。UITabBarControllerDelegateは、アプリ起動時、存在するインスタンスなら、実装できます。 (最初のタブのViewController以外は、タップして表示するまで、生成されていませんので、注意してください) UITabBarControllerDelegateのメソッド「optional func **tabBarController**(_ tabBarController: UITabBarController, **didSelectViewController** viewController: UIViewController)」を利用するのがいいでしょう。