如何将NavigationDrawerController和PageTabBarController添加到同一个项目中

时间:2016-11-09 06:33:03

标签: swift cosmicmind

  let pageTabBarController = AppPageTabBarController(viewControllers: [redViewController, greenViewController, blueViewController], selectedIndex: 0)
        let toolbarController = AppToolbarController(rootViewController: pageTabBarController)
        let menuController = AppMenuController(rootViewController: toolbarController)

        window = UIWindow(frame: Device.bounds)
        window!.rootViewController = menuController
        window!.makeKeyAndVisible()

2 个答案:

答案 0 :(得分:0)

在此stackoverflow question中,我添加了有关导航控件的更多见解。你会发现它很有用。要直接回答您的问题,您正在寻找如下代码设置:

import UIKit
import Material

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func applicationDidFinishLaunching(_ application: UIApplication) {
    let redViewController = RedViewController()
    let greenViewController = GreenViewController()
    let blueViewController = BlueViewController()

    let pageTabBarController = AppPageTabBarController(viewControllers: [redViewController, greenViewController, blueViewController], selectedIndex: 0)
    let toolbarController = AppToolbarController(rootViewController: pageTabBarController)
    let menuController = AppMenuController(rootViewController: toolbarController)

    let leftViewController = LeftViewController()
    let rightViewController = RightViewController()

    let navigationDrawerController = NavigationDrawerController(rootViewController: menuController,
                                                                leftViewController: leftViewController,
                                                                rightViewController: rightViewController)

    window = UIWindow(frame: Device.bounds)
    window!.rootViewController = navigationDrawerController
    window!.makeKeyAndVisible()
}
}

基本思想是您将导航控制器(具有特定导航功能的控制器)堆叠在一起。您可以轻松地重新排列控制器以创建不同的流,并且您可以轻松添加更多导航控制器,例如SnackbarController。

堆叠视图控制器的顺序取决于您希望导航控制器的行为方式。例如,如果将MenuController放在ToolbarController中,一旦转换ToolbarController的rootViewController,它就会转换出来。通过将其放在外部,您可以转换ToolbarController,并且MenuController保留在视图层次结构中。

需要注意的一条规则是,您应始终将NavigationDrawerController放置为最外部的导航控件,因为leftright控制器应始终与所有其他控件重叠。

希望有所帮助:)

答案 1 :(得分:-1)

 let pageTabBarController = AppPageTabBarController(viewControllers: [redViewController, greenViewController, blueViewController], selectedIndex: 0)
        let toolbarController = AppToolbarController(rootViewController: pageTabBarController)
        let menuController = AppMenuController(rootViewController: toolbarController)
        let navigationController  = AppNavigationDrawerController(rootViewController: menuController, leftViewController: leftViewController,rightViewController: rightViewController)

    window = UIWindow(frame: Device.bounds)
    window!.rootViewController = navigationController
    window!.makeKeyAndVisible()