Ios 我应该使用什么序列来进行导航,比如下面的屏幕截图?

Ios 我应该使用什么序列来进行导航,比如下面的屏幕截图?,ios,swift,Ios,Swift,在一个俄罗斯银行应用程序中,我发现我想在我的应用程序中实现一个非常好的导航(对不起,俄罗斯人,希望一切都清楚) 我目前正在做幻灯片导航面板通过该教程 导航面板工作得很好 现在我有了这样的结构。不幸的是,当单击单元格时,新的TableViewController将全屏打开,我希望它从主侧视图控制器继承位置 简而言之,我的侧栏是如何工作的。我管理3个控制器,MainViewController、SidePanelViewController和ContainerViewContentLoller。

在一个俄罗斯银行应用程序中,我发现我想在我的应用程序中实现一个非常好的导航(对不起,俄罗斯人,希望一切都清楚)

我目前正在做幻灯片导航面板通过该教程

导航面板工作得很好

现在我有了这样的结构。不幸的是,当单击单元格时,新的TableViewController将全屏打开,我希望它从主侧视图控制器继承位置

简而言之,我的侧栏是如何工作的。我管理3个控制器,MainViewController、SidePanelViewController和ContainerViewContentLoller。对于两个控制器之间的所有类型的交互,最后一个控制器能够

这是源代码:

    import UIKit
        import QuartzCore

        enum SlideOutState {
             case BothCollapsed
             case LeftPanelExpanded
        }

    class ContainerViewController: UIViewController {

    var centerNavigationController: UINavigationController!
    var centerViewController: ViewController!

    var currentState: SlideOutState = .BothCollapsed {
        didSet {
            let shouldShowShadow = currentState != .BothCollapsed
            showShadowForCenterViewController(shouldShowShadow)
        }
    }

    var leftViewController: SidePanelViewController?

  override func viewDidLoad() {
    super.viewDidLoad()

    centerViewController = UIStoryboard.centerViewController()
    centerViewController.delegate = self

    // wrap the centerViewController in a navigation controller, so we can push views to it
    // and display bar button items in the navigation bar
    centerNavigationController = UINavigationController(rootViewController: centerViewController)
    view.addSubview(centerNavigationController.view)
    addChildViewController(centerNavigationController)

    centerNavigationController.didMoveToParentViewController(self)

  }

}

let centerPanelExpandedOffset: CGFloat = 60

extension ContainerViewController: CenterViewControllerDelegate {

    func toggleLeftPanel() {

        let notAlreadyExpanded = (currentState != .LeftPanelExpanded)

        if notAlreadyExpanded {
            addLeftPanelViewController()
        }

        animateLeftPanel(shouldExpand: notAlreadyExpanded)

    }

    func toggleRightPanel() {
    }

    func addLeftPanelViewController() {

        if (leftViewController == nil) {
            leftViewController = UIStoryboard.leftViewController()
            leftViewController!.categories = Category.allCats()

            addChildSidePanelController(leftViewController!)
        }

    }

    func addChildSidePanelController(sidePanelController: SidePanelViewController) {
        view.insertSubview(sidePanelController.view, atIndex: 0)

        addChildViewController(sidePanelController)
        sidePanelController.didMoveToParentViewController(self)
    }


    func animateLeftPanel(shouldExpand shouldExpand: Bool) {

        if (shouldExpand) {
            currentState = .LeftPanelExpanded

            animateCenterPanelXPosition(targetPosition: CGRectGetWidth(centerNavigationController.view.frame) - centerPanelExpandedOffset)
        } else {
            animateCenterPanelXPosition(targetPosition: 0) { finished in
                self.currentState = .BothCollapsed

                self.leftViewController!.view.removeFromSuperview()
                self.leftViewController = nil;
            }
        }

    }

    func animateCenterPanelXPosition(targetPosition targetPosition: CGFloat, completion: ((Bool) -> Void)! = nil) {
        UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: .CurveEaseInOut, animations: {
            self.centerNavigationController.view.frame.origin.x = targetPosition
            }, completion: completion)
    }

    func showShadowForCenterViewController(shouldShowShadow: Bool) {
        if (shouldShowShadow) {
            centerNavigationController.view.layer.shadowOpacity = 0.8
        } else {
            centerNavigationController.view.layer.shadowOpacity = 0.0
        }
    }

}


private extension UIStoryboard {
  class func mainStoryboard() -> UIStoryboard { return UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) }

  class func leftViewController() -> SidePanelViewController? {
    return mainStoryboard().instantiateViewControllerWithIdentifier("LeftViewController") as? SidePanelViewController
  }


  class func centerViewController() -> ViewController? {
    return mainStoryboard().instantiateViewControllerWithIdentifier("CenterViewController") as? ViewController
  }

}

所以,我不确定,对于tableviewcontroller,我应该编写与side controller相同的规则,您有什么建议?

看起来本例中的侧面板实际上是
UINavigationController
的一个实例,当顶部单元格像常规一样被点击时,它只是推到它上面。图像中最左侧的视图控制器应该嵌入导航控制器中,而不是最右侧。i、 它应该是NavController->VC1->CitySwreveaviewcontroller,如果您愿意尝试的话,它非常清晰且易于使用