スライドメニュー（SWRevealViewController）[再々追記あり]

スライドメニュー欲しくて
iOS-Slide-Menuっての試したけどObjective-cだとうまくいったんだけど、Swiftだとうまくいかないから
SWRevealViewControllerっていうのを試して見たらうまくいったので使い方まとめ。

基本的には[チュートリアル通り](http://www.appcoda.com/sidebar-menu-swift/)にやればいいかなと
`“SWRevealViewControllerSetSegue”`ってなってる部分は`SWRevealViewControllerSegueSetController`です。
podsでuse_frameworks!を書いてインストールする場合は、[以前書いた通り](http://qiita.com/minely/items/b6d394e80e7700a5bc4c)`import SWRevealViewController`で見つかるようになります。

大雑把にですが以下説明

最終的なストーリーボードはこんな感じです。
<img width="797" alt="スクリーンショット_2015-12-26_0_27_25.png" src="https://qiita-image-store.s3.amazonaws.com/0/9256/a341535f-ed9d-cb81-b3c0-39699fab8f74.png">

①ViewControllerを追加
　追加したストーリーボード<img width="262" alt="スクリーンショット 2015-12-26 0.34.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/9256/4f4f1560-0e39-a456-6872-431f145a9ae4.png">
　Classに`SWRevealViewController`を設定

②NavigationControllerとViewControllerのセットを作成
　NavigationControllerにボタンを表示するのでNavigationControllerは必要です。
　それに紐づく.swiftも作成。
　各ビューにメニューボタンも自分で置く

③メニュー用のViewControllerを作成
　今回のサンプルは固定メニューのためにstatic Cellsを設定したいのでTableViewControllerを使ってます。
<img width="1408" alt="スクリーンショット 2015-12-26 0.43.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/9256/3213e604-ae46-2d45-f30c-72676de1b0a5.png">

④SWRevealViewControllerとメニューのひも付け
　<img width="469" alt="スクリーンショット 2015-12-26 0.45.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/9256/ce69ac3b-1281-10e3-1439-09642907ed96.png">
　右クリックでピーって引っ張ってCustomを選択して
<img width="259" alt="スクリーンショット 2015-12-26 0.47.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/9256/fe20999d-c9a9-24f9-3005-71188e4be3ab.png">
　Identifierに`sw_rear` classに`SWRevealViewControllerSegueSetController`
　を設定。**これがサイドメニューの設定**

⑤各画面をつなぐ
　初期画面はSWRevealViewControllerから`reveal view controller set controller`を選択して
<img width="261" alt="スクリーンショット 2015-12-26 0.52.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/9256/f461acca-42b2-3fd0-50c7-458e1064c4e7.png">
　追加でIdentifierに`sw_front`を設定
　他の２画面と初期画面をTableViewのCellから`reveal view controller push controller`で各々つなぐ

⑥ViewController.swiftの編集
　メニューボタンを`menuButton`で設定して
```swift:sample
        if self.revealViewController() != nil {
            menuButton.target = self.revealViewController()
            menuButton.action = "revealToggle:"
           self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
        }
```
<img width="704" alt="スクリーンショット 2015-12-26 0.55.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/9256/924bb482-fab1-0a24-a696-7e66dadd75b7.png">

ッて感じで動く！

[サンプルGitに置いときます。](https://github.com/kameware/MenuSampleSwift)

#*追記*
メイン画面タップで閉じるようにする場合は
```objc:ViewController.swift
        let revealController = self.revealViewController()
        revealController.tapGestureRecognizer()
```
を足せばいいみたい。

#さらなる追記
コードで遷移する場合は
```objc:sample
        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とやるみたい