导航栏不显示
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。
【讨论】:
以上是关于导航栏不显示的主要内容,如果未能解决你的问题,请参考以下文章
react-native 页面使用WebView布满整个页面,导航栏不显示问题