【swift】UITabBarControllerにスライドメニューを追加する方法
はじめに
スライドメニューで検索すると色々出てきたのですが、今回は
SlideMenuControllerSwiftというライブラリを使わせていただきました。
紹介されている使い方をそのままでした。
Podfileに以下を追加して、podinstallするとインストール完了です
Podfile
use_frameworks! pod 'SlideMenuControllerSwift'
実装
AppDelegate.swift
import UIKit import SlideMenuControllerSwift @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { let tabbarController: TabBarController = TabBarController() let menuController = MenuViewController() let slideMenuController = SlideMenuController(mainViewController: tabbarController, leftMenuViewController: menuController) self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.rootViewController = slideMenuController self.window?.makeKeyAndVisible() return true } ・・・ }
TabBarController.swift
class TabBarController: UITabBarController { var navController: UINavigationController! var navController2: UINavigationController! var navController3: UINavigationController! var navController4: UINavigationController! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. let vc = ViewController() navController = UINavigationController(rootViewController: vc) let vc2 = ViewController() navController2 = UINavigationController(rootViewController: vc2) let vc3 = ViewController() navController3 = UINavigationController(rootViewController: vc3) let vc4 = ViewController() navController4 = UINavigationController(rootViewController: vc4) // タブ画像設定 navController.tabBarItem.image = UIImage(named: "icon.png") navController2.tabBarItem.image = UIImage(named: "icon.png") navController3.tabBarItem.image = UIImage(named: "icon.png") navController4.tabBarItem.image = UIImage(named: "icon.png") // タブタイトル設定 navController.tabBarItem.title = "タブ1" navController2.tabBarItem.title = "タブ2" navController3.tabBarItem.title = "タブ3" navController4.tabBarItem.title = "タブ4" let tabs = NSArray(objects: navController, navController2, navController3, navController4) self.setViewControllers(tabs as? [UIViewController], animated: true) } }
ViewController.swift
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.view.backgroundColor = UIColor.whiteColor() self.navigationController?.navigationBar.tintColor = UIColor.whiteColor() self.navigationController?.navigationBar.barTintColor = UIColor.blackColor() self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] let iconHome = UIBarButtonItem(image: UIImage(named: "menu.png"), style: .Plain, target: self, action: "onMenu:") self.navigationItem.leftBarButtonItem = iconHome } func onMenu(sender: UIButton) { self.slideMenuController()?.openLeft() } }
便利でかっこいいです。
以上です