iPhoneアプリ開発

【Swift】動的にUITabBarControllerで画面を切り替える方法

Swiftから動的にタブで複数画面を切り替える。

UITabBarControllerに今回は2つの画面を追加し、タブのアイコンを押すことで画面を切り替える。

 

切り替える元画面のコードは以下。

var memberName: String?
    private var window: UIWindow?
    private var myTabBarController: UITabBarController!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        
        //UIViewControllerをタブ数分作成してUITabViewControllerに埋め込む
        let firstView: UIViewController = FirstViewController()
        let secondView: UIViewController = SecondViewController()
        firstView.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Featured, tag: 1)//アイコン
        secondView.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Bookmarks, tag: 2)
        let viewArr = NSArray(objects: firstView, secondView)
        myTabBarController = UITabBarController()
        myTabBarController?.setViewControllers(viewArr as! [UIViewController], animated: false)
        self.window!.rootViewController = myTabBarController
        
        self.window!.makeKeyAndVisible()
        
        //return true

        // Do any additional setup after loading the view.
    }
}

 

タブで切り替える先のコードは以下。

import UIKit

class FirstViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.redColor();
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
import UIKit

class SecondViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.blueColor()
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

 

以上で、タブのアイコンを押下するとそれぞれのViewController(First,Second)へ遷移することができる。

アイコンとViewControllerの数を増やせば、さらに切り替える画面を追加することもできる。