gpt4 book ai didi

ios - UIBarButtonItem 导致无法识别的选择器发送到实例

转载 作者:可可西里 更新时间:2023-11-01 01:26:53 24 4
gpt4 key购买 nike

我想以编程方式在 UIBarButtonItem 上创建弹出菜单,这是我编写的代码

    static func setNavigationRightButton(myView: UIViewController) {

navBarBtn = UIButton(type: .custom)
navBarBtn.addTarget(myView, action: #selector(pizza.handleFunc(_:)), for: .touchUpInside)
navBarBtn.frame = CGRect(x: 0, y: 0, width: 33, height: 30)
navBarBtn.imageView?.contentMode = .scaleAspectFit
//navBarBtn.setTitle("10", for: .normal)
setCartBadge()
navBarBtn.titleLabel?.font = UIFont.systemFont(ofSize: 9)

let barButton = UIBarButtonItem(customView: navBarBtn)
myView.navigationItem.rightBarButtonItem = barButton
}

这是 Action 函数

    func handleFunc(_ sender: UIBarButtonItem!) {
let vc = storyboard?.instantiateViewController(withIdentifier: "ShoppingCartPopoverVC") as! ShoppingCartPopoverVC
vc.preferredContentSize = CGSize(width: UIScreen.main.bounds.width, height: 100)
let navController = UINavigationController(rootViewController: vc)
navController.modalPresentationStyle = .popover
let popOver = navController.popoverPresentationController
popOver?.delegate = self
popOver?.barButtonItem = sender
self.present(navController, animated: true, completion: nil)
}

当我在这里“popOver?.barButtonItem = sender”时,应用程序崩溃并出现此错误

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIButton _viewForPresenting]: unrecognized selector sent to instance 0x7faa0b5148f0'

最佳答案

您的目标/操作被设置为 UIButton,但是您的操作方法为发送者指定了 UIBarButtonItem 而不是 UIButton

您需要更新您的操作:

func handleFunc(_ sender: UIButton) {
let vc = storyboard?.instantiateViewController(withIdentifier: "ShoppingCartPopoverVC") as! ShoppingCartPopoverVC
vc.preferredContentSize = CGSize(width: UIScreen.main.bounds.width, height: 100)
let navController = UINavigationController(rootViewController: vc)
navController.modalPresentationStyle = .popover
let popOver = navController.popoverPresentationController
popOver?.delegate = self
popOver?.sourceView = sender
popOver?.sourceRect = sender.bounds
self.present(navController, animated: true, completion: nil)
}

请注意参数的更改以及在弹出框 Controller 上设置的属性。

关于ios - UIBarButtonItem 导致无法识别的选择器发送到实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41152273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com