質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

1284閲覧

制御文が呼ばれない

takor

総合スコア11

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/14 08:32

編集2017/02/17 10:38

MainStoryBoard上にタップするとオーディオを再生し、再生中のbackground colorが変更されるUIButtonを2つ設置しています。yourButton、yourButton2になります。

MainStoryBoard上に新たにyourButton、yourButton2のオーディオを順番に再生するyourButton3を設置したのですが、以下のコードで試してみると
else if文の三番目のaudioPlayerdidFinishPlayingが呼ばれません。

let url1 = Bundle.main.bundleURL.appendingPathComponent("music1.mp3") let url2 = Bundle.main.bundleURL.appendingPathComponent("music2.mp3") @IBOutlet weak var yourButton: customButton! @IBOutlet weak var yourButton2: customButton! @IBOutlet weak var yourButton3: customButton! fileprivate var player1:AVAudioPlayer? fileprivate var player2:AVAudioPlayer? fileprivate var player3:AVAudioPlayer? @IBAction func pushButton1(sender: UIButton) { Player(url: url1) } @IBAction func pushButton2(sender: UIButton) { Player1(url: url2) } @IBAction func pushButton3(_ sender: UIButton) { Player(url: url2) player1!.play() } func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { if (player === player1) { yourButton.isSelected = false } else if (player === player2) { yourButton2.isSelected = false } else if (player === player3) { yourButton.isSelected = false player2!.play() yourButton2.isSelected = false } } func Player(url: URL) { do { try player1 = AVAudioPlayer(contentsOf:url) player1!.play() yourButton.isSelected = true player1!.delegate = self } catch { print(error) } } func Player1(url: URL) { do { try player2 = AVAudioPlayer(contentsOf:url) player2!.play() yourButton2.isSelected = true player2!.delegate = self } catch { print(error) } } func Player3(url: URL, url2: URL) { do { try player1 = AVAudioPlayer(contentsOf:url) try player2 = AVAudioPlayer(contentsOf: url2) player1!.play() yourButton.isSelected = true player1!.delegate = self } catch { print(error) } }

以下の文で解決しました!

func

1 if (player === player1) { 2 yourButton.isSelected = false 3 } else if (player === player2) { 4 yourButton2.isSelected = false 5 } 6} 7コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

nilになるのはPlayer3ではなくplayer3ですよね?
初期化も何もしていないのでnilになるのは当然です。

投稿2017/02/14 08:38

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問