Ios 导航控制器中的静态按钮?
我想知道实现以下目标的最佳方法是什么。启动时我的应用程序将转到以下tableview: 选择类别时,将切换到另一个tableview,如下所示: 我想做的是,最终在第一个视图中使用“Basket”barbuttonite来更新篮子金额的总价。我还希望按钮在整个导航控制器循环中可见 有没有一种方法可以让我在navigationcontroller流程的每个阶段都显示篮子按钮Ios 导航控制器中的静态按钮?,ios,swift,uinavigationbar,uibarbuttonitem,Ios,Swift,Uinavigationbar,Uibarbuttonitem,我想知道实现以下目标的最佳方法是什么。启动时我的应用程序将转到以下tableview: 选择类别时,将切换到另一个tableview,如下所示: 我想做的是,最终在第一个视图中使用“Basket”barbuttonite来更新篮子金额的总价。我还希望按钮在整个导航控制器循环中可见 有没有一种方法可以让我在navigationcontroller流程的每个阶段都显示篮子按钮 例如,我想让按钮显示在第二个表视图上。是的,您可以通过使用UINavigationController的take类来实现
例如,我想让按钮显示在第二个表视图上。是的,您可以通过使用
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
作为窗口的rootView控制器
第二条路
获取UIViewController
extension UIViewController {
func addRightButtonItem() {
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Basket", style: .done, target: self, action: #selector(barButtonMethod(_:)))
}
@objc func barButtonMethod(_ sender: UIBarButtonItem) {
// Your code
}
}
并在VIEW中调用下面的方法将显示每个viewController的
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.addRightButtonItem()
}
是的,您可以使用
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
作为窗口的rootView控制器
第二条路
获取UIViewController
extension UIViewController {
func addRightButtonItem() {
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Basket", style: .done, target: self, action: #selector(barButtonMethod(_:)))
}
@objc func barButtonMethod(_ sender: UIBarButtonItem) {
// Your code
}
}
并在VIEW中调用下面的方法将显示每个viewController的
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.addRightButtonItem()
}
您是通过编程或使用故事板创建导航控制器的?我使用了一个故事板。好的,您是如何在第一个ViewController上显示篮子的?我已将条形按钮直接拖动到TVC顶部的UINavigationItem中。您是通过编程或使用故事板创建导航控制器的?我使用了一个故事板。好的,如何在第一个ViewController上显示篮框?我已将栏按钮直接拖动到TVC顶部的UINavigationItem中。感谢您的回复;我应该说,我用了一个故事板,把我的按钮直接拖进了第一个TVC。不确定,但我认为你不应该通过故事板来实现它。只有这样才能实现,否则您应该使用UIViewController的扩展,在右侧添加BarButtonItem,并在每个视图控制器中调用此方法。您必须在每个控制器中拖放条项目,或者使用上述代码。。更好的方法是为了可重用性而使用代码好的,这是有道理的。我只是有点困惑,上面的“巴布顿主义”是在哪里产生的?我是否在每个TVC中创建它?我将使用扩展UIViewControllerThanks的第二种方式更新以获得回复;我应该说,我用了一个故事板,把我的按钮直接拖进了第一个TVC。不确定,但我认为你不应该通过故事板来实现它。只有这样才能实现,否则您应该使用UIViewController的扩展,在右侧添加BarButtonItem,并在每个视图控制器中调用此方法。您必须在每个控制器中拖放条项目,或者使用上述代码。。更好的方法是为了可重用性而使用代码好的,这是有道理的。我只是有点困惑,上面的“巴布顿主义”是在哪里产生的?我是否在每个TVC中创建它?我将使用UIViewController扩展的第二种方式进行更新