【问题标题】: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


    }

【问题讨论】:

    标签: ios swift swift3 uinavigationcontroller


    【解决方案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() 当然

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 2013-01-20
      • 1970-01-01
      • 2019-01-11
      相关资源
      最近更新 更多