如何显示所有页面导航栏按钮
Posted
技术标签:
【中文标题】如何显示所有页面导航栏按钮【英文标题】:How to show all page navigation bar button 【发布时间】:2017-03-16 12:03:02 【问题描述】:我正在使用电子商务应用程序,我想显示所有页面购物篮按钮.. 用户点击任何页面,用户可以检查所有添加的产品列表,然后她可以从那里检查..
我的导航栏以编程方式制作:
let viewController = DishViewController()
viewController.shopCategory = shopCategory
let navigationController = UINavigationController.init(rootViewController: viewController)
self.present(navigationController, animated: true, completion: nil)
目前我正在做我的每页显示购物篮 viewDidload() :
func setupNavigationBar()
// back button without title
self.navigationController?.navigationBar.topItem?.title = ""
//set titile
self.navigationItem.title = "Your Order"
let rightButton = UIBarButtonItem(image: #imageLiteral(resourceName: "busket"), style: .plain, target: nil, action: nil)
//show the Edit button item
self.navigationItem.rightBarButtonItem = rightButton
【问题讨论】:
【参考方案1】:您可以创建一个extension
到UIViewController
并实现它们的功能。
extension UIViewController
func setupNavigationBar(title: String)
// back button without title
self.navigationController?.navigationBar.topItem?.title = ""
//set titile
self.navigationItem.title = title
let rightButton = UIBarButtonItem(image: #imageLiteral(resourceName: "busket"), style: .plain, target: nil, action: nil)
//show the Edit button item
self.navigationItem.rightBarButtonItem = rightButton
在您的 ViewControllers's ViewDidLoad
方法中只需调用
setupNavigationBar(title: "Your Order")
希望这能解决您的问题。
【讨论】:
如果我想这样做。某些页面有 2 个按钮(busket,搜索)或 1 个按钮(busket)。我能做些什么呢? 您可以通过将按钮类型作为参数与标题一起传递来实现,并根据它创建一个显示逻辑。例如 func setupNavigationBar(title: String, buttons: [String]) 。然后调用 setupNavigationBar(title: "Your Order", buttons: ["busket","search"]) 我在 NavigationController 内的 TabViewController 中有 ViewControllers。我想在所有控制器中都有我的 navigationItem,但我看不到它?它在导航栏下【参考方案2】:您可以创建一个 BaseViewController 并从它继承您的视图控制器。 在您的 BaseViewController 上,您有:
override func viewDidLoad()
super.viewDidLoad()
self.navigationController?.navigationBar.topItem?.title = ""
//set titile
self.navigationItem.title = "Your Order"
let rightButton = UIBarButtonItem(image: #imageLiteral(resourceName: "busket"), style: .plain, target: nil, action: nil)
//show the Edit button item
self.navigationItem.rightBarButtonItem = rightButton
那么你所有的视图控制器都会有按钮,只要他们调用 super.viewDidLoad() 当然
【讨论】:
以上是关于如何显示所有页面导航栏按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何在iphone的子视图页面中创建带有导航返回按钮的导航栏