dasukoの技術ブログ

現役エンジニアのブログです。

【Swift】UITabBarController

はじめに

今回はUITabBarControllerを使ってみたいと思います。

公式ドキュメントはこちらです!

Apple Developer Documentation

 

UITabBarControllerは複数のViewControllerを管理してくれるContainerViewControllerで、

画面の下部にタブが表示され、ユーザが選択したタブによって表示するViewControllerを切り替えてくれます!

 

UIPageViewControllerについてはこちらで解説してますので、興味のある方は見てみてください!

dasuko.hatenadiary.jp

実装

import UIKit

public class ViewController: UITabBarController {
    
    public override func viewDidLoad() {
        super.viewDidLoad()
        
        // 背景が赤色のViewController
        let redVC = UIViewController()

        // タブのアイコンはブックマークを指定
        redVC.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 1)
        redVC.view.backgroundColor = .red

        // 背景が青色のViewController        
        let blueVC = UIViewController()

        // タブのアイコンはダウンロードを指定
        blueVC.tabBarItem = UITabBarItem(tabBarSystemItem: .downloads, tag: 2)
        blueVC.view.backgroundColor = .blue
        
        setViewControllers([redVC, blueVC], animated: true)
    }
}

 

実行するとこのようになります

gyazo.com

下のタブを選択する度に、で表示されているViewControllerが切り替わっているのが分かります!

 

必要な手順は以下のような流れです

  1. ViewControllerインスタンス
  2. ViewControllertabBarItemを指定
  3. setViewControllersでViewControllerのArrayを指定

 

UITabBarItemでブックマークアイコン、ダウンロードアイコン以外に指定できるアイコンについてはこちらをご確認ください。

Apple Developer Documentation

 

また、UITabBarItemには以下のようなイニシャライザも定義されており、

独自の画像を指定することも可能です。

convenience init(title: String?, 
           image: UIImage?, 
             tag: Int)

プロパティ

selectedIndex

self.selectedIndex = 0

selectedIndexを初回に設定することにより、そのインデックスのタブ(ViewController)を選択した状態にすることができます

また、現在選択中のタブのインデックスを取得できます。

selectedViewController

selectedViewControllerを参照することにより、現在選択されているViewControllerを参照することができます

tabBar

UITabBarControllerに紐づくタブバー(UITabBar)を取得できます。

デリゲート

デリゲートは一つのみご紹介します。

func tabBarController(UITabBarController, didSelect: UIViewController)

タブが選択された時に呼び出されます!

タブを選択したときに画面をリロードするみたいなことができると思います!

参考

Apple Developer Documentation