tukuyo's blog

へっぽこまん

スポンサーリンク

コードでタブビューを作る【Swift】

環境

必要になる物

  • TabViewController
  • タブに表示したいビュー(二つ以上)

TabViewController

import UIKit

class TabViewController: UITabBarController {

    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        var viewControllers = [UIViewController]()
        
        let firstView = FirstViewController()
        firstView.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 1)
        viewControllers.append(firstView)
        
        let secondView = SecondViewController()
        secondView.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 2)
        viewControllers.append(secondView)
        
        self.setViewControllers(viewControllers, animated: false)
    }
}

あとは,SceneDelegateもしくは,AppDelegateを調整するだけ.

import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        let window = UIWindow(windowScene: windowScene)
        self.window = window
        window.rootViewController = TabViewController()
        window.makeKeyAndVisible()
    }
}

応用編

TabのなかでNavigationViewを使いたい場合 MainNavigationViewControllerとか適当な名前をつけた,UINavigationControllerを継承したクラスを作って,
そのMainNavigationViewControllerから,呼び出す方法と普通にいつも通りUINavigationController(rootViewController: _ )で呼び出して上げる方法でできる.

import UIKit
import RAMAnimatedTabBarController

class TabViewController: UITabBarController {

    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        var viewControllers = [UIViewController]()
        
        let firstView = UINavigationController(rootViewController: FirstViewController())
        firstView.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 1)
        viewControllers.append(firstView)
        
        let settingView = MainNavigationController(rootViewController: SettingViewController())
        settingView.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 2)
        viewControllers.append(settingView)
        
        self.setViewControllers(viewControllers, animated: false)
    }
}

スポンサーリンク