miyazaki-dev

【Swift】TabBarViewControllerをプログラミングで作成

Swift

機能がたくさんあるアプリではよくあるTabBarViewController。全てコードでの作成となります。

以下がサンプル。

swiftでのtabviewcontrollerのサンプル

ルート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.
  }
}

以上!