导航栏未显示在 childViewController 中

恶作剧

hamburger menu在我的 ios 应用程序中创建了一个

我有一个navigationBar在我rootViewController,但现在我需要移动navigationBar到我的一个childViewController对于一些functions/buttons工作。

现在,我已经搬到它变成childViewControllernavigationBar不显示。如果我做childViewControllerrootControllernavigationBar显示细腻,这是因为在我的appDelegate我有rootController作为navigationController

只有当我使之成为childViewControllernavigationBar决定不显示。不知道我需要做什么才能让它工作。

这是我appDelegate制作的地方rootViewController

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        window = UIWindow(frame: UIScreen.main.bounds)
        window?.makeKeyAndVisible()
        window?.rootViewController = UINavigationController(rootViewController: jobListController())


        return true
    }

这是我viewDidLoad (rootViewController)要添加的汉堡菜单childViewControllers

override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = UIColor.white

        // ADD VIEWCONTROLLERS TO MENU
        view.addSubview(sideBarUIView)

        addChildViewController(sideBar)
        view.addSubview(sideBar.view)
        sideBar.view.center = sideBarUIView.center

        addChildViewController(jobList)
        view.addSubview(jobList.view)
        jobList.view.center = overlayView.center

        // ADD UI VIEWS TO HAMBURGER MENU
        view.addSubview(overlayView)
        overlayView.isHidden = true
    }

这是childViewController我想添加navigationBar到的:

class jobListController: UIViewController {
        super.viewDidLoad()

        navigationController?.navigationBar.barTintColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)
        navigationController?.view.backgroundColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)
        navigationController?.navigationBar.shadowImage = UIImage()

        navigationItem.title = "JOBS"

        let searchButton = UIBarButtonItem(barButtonSystemItem: .search, target: self, action: #selector(HandleSearch))
        let addNewJobButton = UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: #selector(HandleNewJob))
        searchButton.tintColor = UIColor(red:0.63, green:0.63, blue:0.63, alpha:1.0)
        addNewJobButton.tintColor = UIColor(red:0.63, green:0.63, blue:0.63, alpha:1.0)

        navigationItem.rightBarButtonItems = [addNewJobButton, searchButton]
    }
}  

编辑:

在使用 Lukáš Mareda 的答案似乎解决了我遇到的问题后,它产生了一个新问题。

在我的 rootController(汉堡菜单)上,我可以在屏幕上的任意位置滑动,它会打开汉堡菜单,这很棒,因为这是所需的效果。

我的 hamburgerMenu 中的一个子视图控制器有一个 tableView。如果我单击其中一个单元格并转到一个新的 viewController,仍然可以通过向右滑动来访问汉堡菜单。

我只想能够访问顶层的汉堡菜单,但现在我似乎可以在我的应用程序的任何地方访问它。

卢卡什·马雷达

1) 汉堡菜单视图控制器应该是 UIViewController 的子类。在 appDelegate 中的第一步:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        window = UIWindow(frame: UIScreen.main.bounds)
        window?.rootViewController = HamburgerViewController()
        window?.makeKeyAndVisible()

        return true
    }

2) HamburgerView 控制器应该将 NavigationController(或其子类)嵌入到一些 rootview 控制器中。所以在 HamburgerViewController

override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = UIColor.white

        // ADD VIEWCONTROLLERS TO MENU
        view.addSubview(sideBarUIView)

        addChildViewController(sideBar)
        view.addSubview(sideBar.view)
        sideBar.view.center = sideBarUIView.center

        let navigationController = UINavigationController(rootViewController: jobListController())
        addChildViewController(navigationController)
        view.addSubview(navigationController.view)
        navigationController.view.center = overlayView.center

        // ADD UI VIEWS TO HAMBURGER MENU
        view.addSubview(overlayView)
        overlayView.isHidden = true
    }

3)JobList 可以保持原样。我假设在当前状态下,该navigationController财产为零

更新答案

关于处理你的有两种想法 hamburgerGestureRecognizer

1)您可以将 hamburgerGestureRecognizer 添加到rootViewController.view 中,JobList这样手势识别器将仅在 rootViewController 中

            let jobList = jobListController()
            let navigationController = UINavigationController(rootViewController: jobList)
            addChildViewController(navigationController)
            view.addSubview(navigationController.view)
            joblist.view.addGestureRecognizer(hamburgerGestureRecognizer)
            navigationController.view.center = overlayView.center

在 hamburgerMenu 屏幕之间切换的地方,你可以重用这个识别器

viewControllerToPresent.view.addGestureRecognizer(hamburgerGestureRecognizer)

2)您可以实现手势识别器的委托功能并根据呈现的viewController有条件地禁用它。像这样的东西:

    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        return currentlyPresentedNavigationController.viewControllers.count == 1
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

导航栏未显示

来自分类Dev

UIButton图像未显示在导航栏中

来自分类Dev

在导航栏中显示活动项目

来自分类Dev

Swift:在模式中强制显示导航栏

来自分类Dev

导航栏未显示在Xcode 6的情节提要中

来自分类Dev

导航栏未显示

来自分类Dev

导航栏中未显示的条形按钮项目

来自分类Dev

导航栏未在Bootstrap Django中显示

来自分类Dev

com.android.support:design:24.1.0在导航栏中未正确显示

来自分类Dev

无法在childviewcontroller中访问uitextfield

来自分类Dev

导航栏中的角度显示帐户登录

来自分类Dev

iOS 7在导航栏中未显示搜索栏的取消按钮

来自分类Dev

xcode 5中的导航栏对象未显示后退按钮,并且没有任何功能

来自分类Dev

在导航栏中显示活动项目

来自分类Dev

UIWebView中的英特尔应用程序框架未显示iPhone 3.5“屏幕的导航栏

来自分类Dev

导航栏未显示

来自分类Dev

在导航栏中显示很多信息

来自分类Dev

图像未显示在悬停的导航栏中

来自分类Dev

Bootstrap导航栏在某些设备中未正确显示

来自分类Dev

无法在当前控制器中添加ChildViewController

来自分类Dev

工具栏显示在导航栏中

来自分类Dev

UIView 中的 childViewController.view.frame 呈现不同的值

来自分类Dev

在 ChildViewController 中关闭 ChildViewController 并转到 Previous ViewController

来自分类Dev

为什么 uiactivity 指示器未显示在导航栏中

来自分类Dev

视图不显示另一个 ChildViewController 的 childViewController

来自分类Dev

导航栏引导菜单未显示在移动设备中

来自分类Dev

字体真棒未显示在 Bootstrap 4 导航栏品牌中

来自分类Dev

工具栏未与导航抽屉一起显示。不在 android studio 或设备中

来自分类Dev

箭头未显示在引导程序 4 的导航栏中悬停时

Related 相关文章

  1. 1

    导航栏未显示

  2. 2

    UIButton图像未显示在导航栏中

  3. 3

    在导航栏中显示活动项目

  4. 4

    Swift:在模式中强制显示导航栏

  5. 5

    导航栏未显示在Xcode 6的情节提要中

  6. 6

    导航栏未显示

  7. 7

    导航栏中未显示的条形按钮项目

  8. 8

    导航栏未在Bootstrap Django中显示

  9. 9

    com.android.support:design:24.1.0在导航栏中未正确显示

  10. 10

    无法在childviewcontroller中访问uitextfield

  11. 11

    导航栏中的角度显示帐户登录

  12. 12

    iOS 7在导航栏中未显示搜索栏的取消按钮

  13. 13

    xcode 5中的导航栏对象未显示后退按钮,并且没有任何功能

  14. 14

    在导航栏中显示活动项目

  15. 15

    UIWebView中的英特尔应用程序框架未显示iPhone 3.5“屏幕的导航栏

  16. 16

    导航栏未显示

  17. 17

    在导航栏中显示很多信息

  18. 18

    图像未显示在悬停的导航栏中

  19. 19

    Bootstrap导航栏在某些设备中未正确显示

  20. 20

    无法在当前控制器中添加ChildViewController

  21. 21

    工具栏显示在导航栏中

  22. 22

    UIView 中的 childViewController.view.frame 呈现不同的值

  23. 23

    在 ChildViewController 中关闭 ChildViewController 并转到 Previous ViewController

  24. 24

    为什么 uiactivity 指示器未显示在导航栏中

  25. 25

    视图不显示另一个 ChildViewController 的 childViewController

  26. 26

    导航栏引导菜单未显示在移动设备中

  27. 27

    字体真棒未显示在 Bootstrap 4 导航栏品牌中

  28. 28

    工具栏未与导航抽屉一起显示。不在 android studio 或设备中

  29. 29

    箭头未显示在引导程序 4 的导航栏中悬停时

热门标签

归档