如何以编程方式向 UIBarButton 添加操作?

How to add an action to a UIBarButton programmatically?

我一直在使用 Swift 创建一个小型 iOS 应用程序只是为了好玩,我已经决定我想要一个通知框(一个钟形按钮,你可以点击它检查是否有任何通知),我还想在每个屏幕上添加钟形按钮。
所以,我决定制作一个基础视图控制器并让其他视图控制器继承它。但是,那是我的问题出现的时候;我不知道如何为该按钮添加动作功能。由于我以编程方式创建了钟形按钮,因此我不能只 ^ drag 并创建一个新的 IBaction。

我找到了这个 post:,但这是针对 UIButton 的,而不是针对 UIBarButton 的,它对我不起作用。

抱歉问了这么长的问题。下面是一个简单的单句问题:
我的问题
如何以编程方式向 UIBarButton 添加操作?

更新 这是我的基本视图控制器:

import UIKit

class BaseViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // add a notification button
        let notificationButton = UIBarButtonItem(image: UIImage(systemName: "bell.fill"))
        notificationButton.tintColor = .black
        
        self.navigationItem.rightBarButtonItem = notificationButton
    }
    
    
    
}

更新2

这是我的新代码:

import UIKit

class BaseViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // add a notification button
        let notificationButton = UIBarButtonItem(
            image: UIImage(systemName: "bell.fill"),
            style: .plain,
            target: self,
            action: #selector(notificationButtonPressed)
        )
        
        notificationButton.tintColor = .black
        
        self.navigationItem.rightBarButtonItem = notificationButton
    }
    
    @objc func notificationButtonPressed() {
        print("Hello")
    }
}

您可以将目标-动作对传递给 UIBarButtonItem 的初始化程序:

let barButton = UIBarButtonItem(
    image: UIImage(systemName: "bell.fill"), 
    style: .plain, 
    target: self, action: #selector(buttonTapped)
)

// somewhere in your view controller:

@objc func buttonTapped() {
    // do something when the bar button is tapped
}

请参阅文档 here

这类似于 UIButtonaddTarget(_:action:for:_) 方法,如果您熟悉的话。