コードでタブビューを作る【Swift】
2020/09/14
環境
必要になる物
- 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)
}
}