导航栏不显示

Posted

技术标签:

【中文标题】导航栏不显示【英文标题】:Navigation Bar does not show 【发布时间】:2017-09-17 10:08:56 【问题描述】:

我整个上午都在想这个。不知道为什么我的视图没有导航按钮...在主视图中备份?

谁能给我解释一下?

    import UIKit
    class LiveStockList: UIViewController 
        override func viewDidLoad() 
            super.viewDidLoad()
            view.backgroundColor = UIColor.white

            let barButtonItem = UIBarButtonItem(title: "back!", style: .plain, target: self, action: #selector(backToViewController))
            self.navigationItem.rightBarButtonItem = barButtonItem
        


        func backToViewController(_ : Any) 
            let viewController = ViewController()
            let navController = UINavigationController (rootViewController: viewController)
            present(navController, animated: true, completion: nil)

        


【问题讨论】:

你在使用故事板吗? 没有。我尝试以编程方式执行此操作。 请出示 AppDelegate.swift 文件代码 pastebin.com/VDeVuXgP 您是说最初您的按钮没有添加到导航栏中?如果可以,请显示屏幕截图 【参考方案1】:

这里有几件事会误导我们。

您要返回的ViewController 是呈现当前ListStockList ViewController 的那个?

如果是,不要调用present(_:)方法,而是调用dismiss(_:completion)方法。

如果您看不到UINavigationBar,您必须检查几件事。

如果ViewController (parent)NavigationController,只需调用push(:_ViewController) 方法,您应该可以看到导航栏。

如果父 ViewController 未嵌入到 NavigationController 中,那么当您呈现 LiveStockList 时,您需要在呈现之前将其嵌入到 NavigationController 中。

类似这样的:

let liveStockList = LiveStockList()
let navController = UINavigationController(rootViewController: liveStockList)
present(navController, animated: true, completion: nil)

然后在您的LiveStockList 中,您应该能够按预期看到navigationBar

否则您可能做了不同的事情,我们可能需要更多信息。

【讨论】:

【参考方案2】:

根据您的问题“不知道为什么我的视图没有导航按钮......在主视图中备份”。

您说在主视图中缺少导航按钮,这是因为您正在呈现一个新的导航控制器。

您只需要从现有的导航控制器推送视图控制器。

我有代码示例:

let vc = UIViewController() self.navigationController?.pushViewController(vc, animated: true)

如果您现有的 View Controller 嵌入在 UINavigationController 中,它将起作用。

不过,如果您想展示一个控制器,那么您应该将一个 UIBarButtonItem 添加到您的导航控制器,并且在该 UIBarButtonItem 的操作上您应该“关闭”视图控制器,因为之前您“呈现”了视图控制器。

如果有任何疑问,请告诉我,谢谢。

【讨论】:

【参考方案3】:

我找错地方了。在 ViewController 中,我有一个启动 LiveStockList 控制器的按钮。 它正在完成它的工作,只是启动控制器并进行转换。

代码:

 func meniu1ButtonPressed () 

    let liveStockList = LiveStockList()
    present(liveStockList, animated: true, completion: nil)


在我为该函数添加新行后,它看起来像这样:

func meniu1ButtonPressed () 

    let liveStockList = LiveStockList()
    let navController = UINavigationController(rootViewController: liveStockList)
    present(navController, animated: true, completion: nil)


...它现在正在工作。它向我显示后退按钮并再次加载 ViewController。

【讨论】:

以上是关于导航栏不显示的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 4动画导航栏不显示

iOS - 方向更改时导航栏不显示大标题

自定义标签栏不显示导航栏

react-native 页面使用WebView布满整个页面,导航栏不显示问题

react-native 页面使用WebView布满整个页面,导航栏不显示问题

iOS:当从主视图控制器嵌入时,导航栏不显示