SlideMenuController と UINavigationController の組み合わせ

新年あけましておめでとうございます.
今年の書き初め(プログラミング)は Swift でした.

最近、約1年ぶりくらいに Swift を書いてます.
Swift 3 から Swift 4 への過渡期により多少辛みがありますが、Xcode の進化に関心したりしています.

今回は iOS で Navigation Drawer を実現するライブラリである SlideMenuControllerSwift と UINavigationController の組み合わせについてです.
たぶんサンプルコード読めば書いてあるのですが、ぱっと検索して出てこなかったので参考になれば.

実装方法はいたって簡単です.
slideMenuController から mainViewController を取得できるので、UINavigationController にキャストしてあげます.

import UIKit

class MenuViewController: UIViewController {
    
    private func navigate(){
        
        let viewController = MyViewController()
        
        (self.slideMenuController()?.mainViewController as? UINavigationController)?.pushViewController(viewController, animated: true)
        
        self.slideMenuController()?.closeLeft()
    }
    
}

 

前提として、mainViewController に UINavigationController をセットしている必要があります.

import UIKit
import SlideMenuControllerSwift

class CustomSlideMenuController: SlideMenuController {
    
    override func awakeFromNib() {
        
        let main = storyboard?.instantiateViewController(withIdentifier: "Main")
        let left = storyboard?.instantiateViewController(withIdentifier: "Left")

        let navigationController = UINavigationController(rootViewController: main!)

        mainViewController = navigationController
        leftViewController = left
        super.awakeFromNib()
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

 

以上です.

PS. 今年はネイティブをよく書きそうな予感がするので、Swift, Kotlin あたりを頑張ります.