Как добавить NavigationDrawerController и PageTabBarController в один проект

  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 ответа

Решение

В этом вопросе о стековом потоке я добавлю больше информации о навигационных элементах управления. Вы можете найти это полезным. Чтобы прямо ответить на ваш вопрос, вы ищете код, который выглядит следующим образом:

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 он будет перемещаться после перехода rootViewController из ToolbarController. Разместив его снаружи, вы можете переместить ToolbarController, и MenuController останется в иерархии представления.

Обратите внимание на одно правило: вы всегда должны размещать NavigationDrawerController в качестве наиболее внешнего навигационного элемента управления, как left а также right контроллеры всегда должны перекрывать все остальные элементы управления.

Надеюсь, это поможет:)

 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()
Другие вопросы по тегам