代码之家  ›  专栏  ›  技术社区  ›  JamMan9

导航控制器中的静态barbuttonities?

  •  0
  • JamMan9  · 技术社区  · 6 年前

    我想知道实现以下目标的最佳方法是什么。启动时我的应用程序将转到以下表视图:

    当您选择一个类别时,将生成另一个表格视图的序列,如下所示:

    我想做的是,最终在第一个视图中有“basket”barbuttonitem,用basket金额的总价更新。我还希望在整个导航控制器循环中都能看到该按钮。

    有没有一种方法可以让导航控制器进程的每个阶段都显示购物篮按钮?

    例如,我想让按钮显示在第二个表视图上。

    当您选择一个类别时,将生成另一个表格视图,如下所示:

    Second TVC

    我想做的是,最终在第一个视图中有“basket”barbuttonitem,用basket金额的总价更新。我还希望按钮在整个导航控制器循环中可见。

    有没有一种方法可以让导航控制器进程的每个阶段都显示购物篮按钮?

    例如,我想让按钮显示在第二个表视图上。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Govaadiyo    6 年前

    是的,你可以通过使用take类 UINavigationController 如下所示

    class CustomNavigationController: UINavigationController, UINavigationControllerDelegate{
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.delegate = self
        }
    
        // MARK: Private Functions
        private func addRightBarButtonTo(viewController: UIViewController){    
            barButtonItem = UIBarButtonItem(title: "Basket", style: .plain, target: self, action: #selector(CustomNavigationController.dismiss(_:)))
            viewController.navigationItem.rightBarButtonItem = barButtonItem
        }
    
        // MARK: UINavigationController Delegate
        func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
            self.addRightBarButtonTo(viewController)
        }
    
        @objc func dismiss(sender: Any){
            self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
        }
    }
    

    使用 CustomNavigationController 作为窗口的根视图控制器。

    第二路

    延长 UIViewController

    extension UIViewController {
        func addRightButtonItem() {
            navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Basket", style: .done, target: self, action: #selector(barButtonMethod(_:)))
        }
    
        @objc func barButtonMethod(_ sender: UIBarButtonItem) {
            // Your code
        }
    }
    

    在视图中调用下面的方法将显示每个视图控制器

    override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
    
            self.addRightButtonItem()
        }