SWReveal TableViewController - 如何启动到不同的 ViewControllers?

SWReveal TableViewController - how to launch to different ViewControllers?

我正在使用 SWReveal 滑出式菜单系统。 菜单是从一个数组生成的,一切正常。例如

arrayOfCellData = [cellData(cell : 1, text : "Angles", image : #imageLiteral(resourceName: "Angles.png")),
                   cellData(cell : 2, text : "Area", image : #imageLiteral(resourceName: "Area.png")),

当我点击一个特定的菜单选项时,我想转到另一个 ViewController。这是我一直在使用但不起作用的代码。 第 1 行调用 segue A 和 2 segue B 的想法...

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    if(indexPath.row == 1 ){
        let vc: AnyObject! = self.storyboard?.instantiateViewController(withIdentifier: "A")
        self.performSegue(withIdentifier: "A", sender: self)
        self.show(vc as! A, sender: vc)
        NSLog("A")
    }
    if(indexPath.row == 2 ){
        let vc: AnyObject! = self.storyboard?.instantiateViewController(withIdentifier: "B")
        self.performSegue(withIdentifier: "B", sender: self)
        self.show(vc as! B, sender: vc)
        NSLog("B")
    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let backItem = UIBarButtonItem()
    backItem.title = " "
    navigationItem.backBarButtonItem = backItem


    if segue.identifier == "A", let nextScene = segue.destination as? A {
        nextScene.categoryCounter = 1
    }
    if segue.identifier == "B", let nextScene = segue.destination as? B {
        nextScene.categoryCounter = 2
    }

}

对于 SWRevealViewController,最好不要在故事板中使用 segues,而是以编程方式收缩显示视图控制器。试试这个,在您的 didSelectRowAtIndexPath 方法中将以下内容添加到您的代码中。

// Here I get the view controllers I am interested in
let frontStoryboard = UIStoryboard(name: "YourStoryboard", bundle: .main)
let frontVC = frontStoryboard.instantiateInitialViewController()

let rearStoryboard = UIStoryboard(name: "YourOtherStoryboard", bundle: .main)
let rearVC = rearStoryboard.instantiateInitialViewController()

// Construct the SWRevealViewController with your view controllers
if let revealVC = SWRevealViewController(rearViewController: rearVC, frontViewController: frontVC) {
    revealVC.modalTransitionStyle = .crossDissolve // Set segue transition
    present(revealVC, animated: true, completion: nil) // Segue to view controller
}