【Swift4、Xcode9.2】TabBarViewControllerをプログラミングで作成

 

普段使ってるアプリでは絶対あるTabBarViewController。全てコードでの作成となります。

以下がサンプル。

ルートViewControllerを設定

一番最初に表示されるのはデフォルトではViewControllerになっているので、設定する。
編集するファイルは、AppDelegate.swift

class AppDelegate: UIResponder, UIApplicationDelegate {
	var window: UIWindow?
	
	func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
		// Override point for customization after application launch.
		
		// 今回は、MainTabBarViewController()
		window?.rootViewController = MainTabBarViewController()
		
		return true
	}
}

MainTabBarViewControllerの作成

AppDelegate.swiftでMainTabBarViewControllerをrootViewControllerとしたのでMainTabBarViewControllerを作成。
class MainTabBarViewController: UITabBarController {
	override func viewDidLoad() {
		super.viewDidLoad()
		
		// FirstViewControllerをタブのRootViewControllerに設定
		let firstVC = UINavigationController(rootViewController: FirstViewController())
		// タブのFooter部分を設定
		firstVC.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 0)

		// SecondViewControllerをタブのRootViewControllerに設定		
		let secondVC = UINavigationController(rootViewController: SecondViewController())
		// タブのFooter部分を設定
		secondVC.tabBarItem = UITabBarItem(tabBarSystemItem: .favorites, tag: 1)
		
		self.viewControllers = [firstVC,secondVC]
	}
	
	override func didReceiveMemoryWarning() {
        	super.didReceiveMemoryWarning()
       		// Dispose of any resources that can be recreated.
    	}
}
またことでもFirstViewControllerとSecondViewControllerが必要になるので作成

FirstViewController、SecondViewControllerの作成

class FirstViewController: UIViewController {

    var firstLabel:UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.view.backgroundColor = UIColor.green
        
        self.firstLabel = UILabel()
        self.firstLabel.frame = CGRect(x: 100, y: 100, width: 100, height: 30)
        self.firstLabel.text = "First Label"
        self.view.addSubview(self.firstLabel)        
        
    }
}
class SecondViewController: UIViewController {

    var secondLabel:UILabel!

    
    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor.yellow
        
        self.secondLabel = UILabel()
        self.secondLabel.frame = CGRect(x: 100, y: 100, width: 150, height: 30)
        self.secondLabel.text = "Second Label"
        self.view.addSubview(self.secondLabel)
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

}
以上!