スライドメニュー欲しくて
iOS-Slide-Menuっての試したけどObjective-cだとうまくいったんだけど、Swiftだとうまくいかないから
SWRevealViewControllerっていうのを試して見たらうまくいったので使い方まとめ。
基本的にはチュートリアル通りにやればいいかなと
“SWRevealViewControllerSetSegue”ってなってる部分はSWRevealViewControllerSegueSetControllerです。
podsでuse_frameworks!を書いてインストールする場合は、以前書いた通りimport SWRevealViewControllerで見つかるようになります。
大雑把にですが以下説明
①ViewControllerを追加
追加したストーリーボード
ClassにSWRevealViewControllerを設定
②NavigationControllerとViewControllerのセットを作成
NavigationControllerにボタンを表示するのでNavigationControllerは必要です。
それに紐づく.swiftも作成。
各ビューにメニューボタンも自分で置く
③メニュー用のViewControllerを作成
今回のサンプルは固定メニューのためにstatic Cellsを設定したいのでTableViewControllerを使ってます。

④SWRevealViewControllerとメニューのひも付け

右クリックでピーって引っ張ってCustomを選択して

Identifierにsw_rear classにSWRevealViewControllerSegueSetController
を設定。これがサイドメニューの設定
⑤各画面をつなぐ
初期画面はSWRevealViewControllerからreveal view controller set controllerを選択して

追加でIdentifierにsw_frontを設定
他の2画面と初期画面をTableViewのCellからreveal view controller push controllerで各々つなぐ
⑥ViewController.swiftの編集
メニューボタンをmenuButtonで設定して
if self.revealViewController() != nil {
menuButton.target = self.revealViewController()
menuButton.action = "revealToggle:"
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
ッて感じで動く!
追記
メイン画面タップで閉じるようにする場合は
let revealController = self.revealViewController()
revealController.tapGestureRecognizer()
を足せばいいみたい。
さらなる追記
コードで遷移する場合は
let storyboard:UIStoryboard = UIStoryboard.init(name: "CardListViewController", bundle: NSBundle.mainBundle())
let cardListViewcontroller:CardListViewController = storyboard.instantiateInitialViewController()! as! CardListViewController
cardListViewcontroller.typeName = types[indexPath.row]
let navigationController = UINavigationController(rootViewController: cardListViewcontroller)
let revealController = self.revealViewController()
revealController.pushFrontViewController(navigationController, animated: true)
ッて感じで
ViewController作成
↓
NavigationController作成
↓
revealViewControllerにpushとやるみたい
