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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

解決済

ボタンひとつで音楽を再生・停止したい

surf
surf

総合スコア0

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

1回答

0評価

0クリップ

1631閲覧

投稿2016/09/06 12:21

編集2022/01/12 10:58

セルごとに異なる曲を再生したく、プロジェクトに4曲(sound01〜sound04)を保存して、以下のコードを書きました。
そして『Play』ボタンを押すと再生するようにしたのですが、できれば『Pause』ボタンを別に作るのではなく、Playを押すとボタンがPauseに変わり、Pauseを押すとボタンがPlayに変わるようにしたいのですがそういうことはできますか?
また、どこにどのようなコードを記載したらいいか、教えて欲しいです。

//ViewControllerのコード import UIKit import AVFoundation class SecondViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, CustomTableViewCellDelegate { let imageNames = \["futako\.jpg", "yokado\.jpg", "fran\.jpg", "zikken\.jpg"\] let imageTitles = \["イヌ2", "ネコ2", "イヌ1", "イヌ2"\] var audioPlayer = AVAudioPlayer\(\) let imageDescriptions = \[ "イヌ", "ネコ", "イヌ", "イヌ" \] override func viewDidLoad\(\) { super\.viewDidLoad\(\) // Do any additional setup after loading the view, typically from a nib\. } override func didReceiveMemoryWarning\(\) { super\.didReceiveMemoryWarning\(\) // Dispose of any resources that can be recreated\. } func tableView\(tableView: UITableView, numberOfRowsInSection section: Int\) -> Int { return imageNames\.count } func tableView\(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath\) -> UITableViewCell { let cell = tableView\.dequeueReusableCellWithIdentifier\("MyCell1"\) as! CustomTableViewCell1 cell\.setCell\(imageNames\[indexPath\.row\], titleText: imageTitles\[indexPath\.row\], descriptionText: imageDescriptions\[indexPath\.row\]\) cell\.index = indexPath cell\.delegate = self return cell } func selectCellButton\(index: NSIndexPath\) { let fileName = "sound\\\(index\.row \+ 1\)" print\(fileName\) do { let filePath = NSBundle\.mainBundle\(\)\.pathForResource\(fileName, ofType: "mp3"\) let audioPath = NSURL\(fileURLWithPath: filePath!\) audioPlayer = try AVAudioPlayer\(contentsOfURL: audioPath\) if audioPlayer\.prepareToPlay\(\) { audioPlayer\.play\(\) } } catch { print\("Error"\) } } } //CustomTableViewCellのコード import UIKit \*\*__###ボールドテキスト__\*\* protocol CustomTableViewCellDelegate: class { func selectCellButton\(index: NSIndexPath\) } class CustomTableViewCell1: UITableViewCell { @IBOutlet weak var myImageView: UIImageView! @IBOutlet weak var myTitleLabel: UILabel! @IBOutlet weak var myDescriptionLabel: UILabel! @IBOutlet weak var tapButton: UIButton! weak var delegate: CustomTableViewCellDelegate! var index: NSIndexPath! override func awakeFromNib\(\) { super\.awakeFromNib\(\) // Initialization code } override func setSelected\(selected: Bool, animated: Bool\) { super\.setSelected\(selected, animated: animated\) // Configure the view for the selected state } func setCell\(imageName: String, titleText: String, descriptionText: String\) { myImageView\.image = UIImage\(named: imageName\) myTitleLabel\.text = titleText myDescriptionLabel\.text = descriptionText } @IBAction func tapButton\(sender: AnyObject\) { delegate\?\.selectCellButton\(index\) } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。