如何显示所有页面导航栏按钮

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】:

您可以创建一个extensionUIViewController 并实现它们的功能。

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的子视图页面中创建带有导航返回按钮的导航栏

按下按钮并成功重定向到另一个页面后,如何禁用导航栏链接?

微信小程序开发,导航栏右边的按钮怎么设置

如何使用 jquery 隐藏用于签名页面的导航栏,以便共享布局仍显示在其他文档上?

android 底部导航栏

登录后如何从导航栏中删除登录按钮