, , , - , , , :
SplitTabBarViewController.swift
var rootViewControllers: [UIViewController]
var detailViewController: UIViewController
var aTabBarController: UITabBarController
var aSplitViewController: UISplitViewController
var primaryTabBarTableViewController: SplitTabBarPrimaryTableViewController
init(rootViewControllers: [UIViewController], detailViewController: UIViewController) {
self.rootViewControllers = rootViewControllers
self.detailViewController = detailViewController
self.aTabBarController = UITabBarController()
self.aTabBarController.viewControllers = self.rootViewControllers
self.aSplitViewController = UISplitViewController()
self.primaryTabBarTableViewController = SplitTabBarPrimaryTableViewController(rootViewControllers: self.rootViewControllers)
self.aSplitViewController.viewControllers = [self.primaryTabBarTableViewController, self.detailViewController]
super.init(nibName: nil, bundle: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
if (UIInterfaceOrientationIsLandscape(UIApplication.sharedApplication().statusBarOrientation)) {
self.addSplitViewController()
} else {
self.addTabBarController()
}
}
override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
self.removeTabBarController()
self.addSplitViewController()
} else {
self.removeSplitViewController()
self.addTabBarController()
}
}
func addTabBarController() {
self.view.addSubview(self.aTabBarController.view)
self.addChildViewController(self.aTabBarController)
self.aTabBarController.view.frame = self.view.frame
}
func removeTabBarController() {
self.aTabBarController.removeFromParentViewController()
self.aTabBarController.view.removeFromSuperview()
}
func addSplitViewController() {
self.view.addSubview(self.aSplitViewController.view)
self.addChildViewController(self.aSplitViewController)
self.aSplitViewController.view.frame = self.view.frame
}
func removeSplitViewController() {
self.aSplitViewController.removeFromParentViewController()
self.aSplitViewController.view.removeFromSuperview()
}
SplitTabBarPrimaryTableViewController.swift
var rootViewControllers: [UIViewController]
init(rootViewControllers: [UIViewController]) {
self.rootViewControllers = rootViewControllers;
super.init(nibName: nil, bundle: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClass(UITableViewCell.classForCoder(), forCellReuseIdentifier: "reuseIdentifier")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.rootViewControllers.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as! UITableViewCell
cell.textLabel?.text = self.rootViewControllers[indexPath.row].title
return cell
}