スライドメニュー欲しくて
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())
}
![スクリーンショット 2015-12-26 0.55.39.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F9256%2F924bb482-fab1-0a24-a696-7e66dadd75b7.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=c6a4bdd2aef74b9da752a55eacc4a977)
ッて感じで動く!
#追記
メイン画面タップで閉じるようにする場合は
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とやるみたい