导航控制器中的静态 barButtonItems?
Posted
技术标签:
【中文标题】导航控制器中的静态 barButtonItems?【英文标题】:Static barButtonItems in a navigation controller? 【发布时间】:2018-08-03 09:33:14 【问题描述】:我想知道实现以下目标的最佳方法是什么。我的应用程序在启动时会转到以下表格视图:
当您选择一个类别时,会转到另一个 tableview,如下所示:
我想要做的是最终在第一个视图中使用“篮子”barButtonItem 来更新篮子数量的总价格。我还希望按钮在整个导航控制器循环中都可见。
有没有办法让我在导航控制器过程的每个阶段都显示篮子按钮?
例如,我想让按钮显示在第二个表格视图上。
【问题讨论】:
您以编程方式或使用情节提要创建了导航控制器? 我使用了故事板。 好的,你是如何在第一个 ViewController 上显示篮子的? 我已将条形按钮直接拖到 TVC 顶部的 UINavigationItem 中。 【参考方案1】:是的,您可以通过使用 UINavigationController
的 take 类来实现它,如下所示
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
作为Window的rootView Controller。
第二种方式
转UIViewController
extension UIViewController
func addRightButtonItem()
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Basket", style: .done, target: self, action: #selector(barButtonMethod(_:)))
@objc func barButtonMethod(_ sender: UIBarButtonItem)
// Your code
并在每个viewController的viewWillAppear中调用下面的方法
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
self.addRightButtonItem()
【讨论】:
感谢您的回复;我应该说,我使用了一个故事板并将我的 barbutton 直接拖到了第一个 TVC 中。 不确定,但我认为您不应该通过情节提要来实现它。只有这样才能实现,否则你应该扩展 UIViewController 并在右侧添加 BarButtonItem 并在每个视图控制器中调用此方法。 要么您必须在每个控制器中拖放条形项目,要么使用上述代码。更好的方法是使用代码实现可重用性目的 好吧,这很有道理。我对上面创建的“barButtonItem”的位置有点困惑?我是否在每个 TVC 中创建它? 我会用第二种方式更新 UIViewController 的扩展以上是关于导航控制器中的静态 barButtonItems?的主要内容,如果未能解决你的问题,请参考以下文章
将右 barbuttonitem 添加到导航控制器 iphone sdk 后视图向上移动
如何在苹果电视的导航栏的 BarButtonItem 上移动焦点?