11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

qnoteAdvent Calendar 2016

Day 3

UIBarButtonItemの再生、一時停止ボタンの切り替え

Posted at

はじめに

qnote Advent Calendar 2016 3日目は4月に新卒で入社した新人が書いてみたいと思います。

UIBarButtonItemを動的に切り替えたいそんなあなたに

例として音楽プレイヤーアプリの再生と一時停止ボタンを切り替えたいと思います。
スクリーンショット 2016-11-29 15.48.00.png
(真ん中のボタンを押したら再生と一時停止を切り替える)

hogeViewController.swift
@IBOutlet weak var toolbar: UIToolbar!

@IBAction func playPauseAction(_ sender: UIBarButtonItem) {
        var items = toolbar.items!
        var toggleButton:UIBarButtonItem
        if /*音楽を再生中かどうか*/ {
            // 音楽の一時停止処理など
            toggleButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.play, target: self, action: #selector(hogeViewController.playPauseAction(_:)))
        } else {
            // 音楽の再生処理など
            toggleButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.pause, target: self, action: #selector(hogeViewController.playPauseAction(_:)))
        }
        items[/*切り替えるボタンの場所*/] = toggleButton
        toolbar.setItems(items, animated: false)
    }

解説

StoryBoardからアウトレットとアクションを引っ張ってきます。

items[/*切り替えるボタンの場所*/] = toggleButton
itemsにはUIToolbarの配列が入っているので何番目のボタンを切り替えるか指定します。
最初の画像の構成は以下のようになっているので
スクリーンショット 2016-11-29 15.49.11.png
PauseとPlayを切り替えるのでここでは3を指定すればOKです。

別のメソッドを呼びたい時は
hogeViewController.playPauseAction(_:))の部分を適宜書き換えれば呼び出せます。

参考サイト

http://stackoverflow.com/questions/29639537/toggle-play-pause-uibarbuttonitem-in-toolbar-using-swift
UIBarButtonSystemItemの一覧はこちら
https://developer.apple.com/reference/uikit/uibarbuttonsystemitem

11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?