我正在尝试访问rightBarButton
函数来显示另一个ViewController
中的购物车,尽管我可以调用该函数,但不会显示任何图像,即购物车图像
下面的代码显示了我如何调用此函数。
override func viewDidLoad() {
super.viewDidLoad()
// Adding Right Bar Button Item
let rightBarButton = RightBarButton()
rightBarButton.addingRightButton()
}
下面的代码显示了
rightBarButton
函数。class RightBarButton {
var storyboard = UIStoryboard()
var navigationItem = UINavigationItem()
var navigationController = UINavigationController()
func addingRightButton() {
let image = UIImage(named: "cart")
let finalImage = resizeImage(image: image!, newWidth: 30)
navigationItem.rightBarButtonItem = FFBadgedBarButtonItem(image: finalImage, target: self, action: #selector(rightButtonTouched))
let button = navigationItem.rightBarButtonItem as? FFBadgedBarButtonItem
cartCount { (cartCount) in
print("Api calling done ...")
print(cartCount)
button?.badge = "\(cartCount)"
}
}
@objc func rightButtonTouched() {
// print("Event Called")
}
func cartCount(completion: @escaping (Int) -> Void) {
// print("Api calling ...")
}
}
如果我将此代码添加到
viewDidLoad()
内,则图像将显示,并且click事件也将起作用。如果您发现有关此代码的任何解决方案,请提供帮助!
最佳答案
这是行不通的,因为navigationItem
类中的RightBarButton
不属于任何导航控制器(因为它是手动创建的,并且未明确附加)。
使创建的FFBadgedBarButtonItem
实例可被视图控制器访问,以便可以正确添加它:
override func viewDidLoad() {
super.viewDidLoad()
// Adding Right Bar Button Item
let rightBarButton = RightBarButton()
rightBarButton.addingRightButton()
navigationItem.rightBarButtonItem = rightBarButton.badgeBarItem // badgeBarItem is the property exposed to the view controller
}
编辑的
RightBarButton
类:class RightBarButton {
var badgeBarItem: FFBadgedBarButtonItem?
func addingRightButton() {
let image = UIImage(named: "cart")
let finalImage = resizeImage(image: image!, newWidth: 30)
badgeBarItem = FFBadgedBarButtonItem(image: finalImage, target: self, action: #selector(rightButtonTouched))
cartCount { [weak self] cartCount in
print("Api calling done ...")
print(cartCount)
self?.badgeBarItem?.badge = "\(cartCount)"
}
}
@objc func rightButtonTouched() {
// print("Event Called")
}
func cartCount(completion: @escaping (Int) -> Void) {
// print("Api calling ...")
}
}
关于ios - 从Swift中的另一个ViewController访问rightBarButton函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55862860/