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