self.navigationItem.rightBarButtonItem = 按钮不起作用?

Posted

技术标签:

【中文标题】self.navigationItem.rightBarButtonItem = 按钮不起作用?【英文标题】:self.navigationItem.rightBarButtonItem = Button not working? 【发布时间】:2020-07-30 22:03:14 【问题描述】:

我有一些代码如下创建一个栏按钮项,然后像许多应用程序一样添加到右侧的导航栏。

我遇到的问题是按钮/图像根本不显示。

我该如何解决这个问题?

仅供参考:在 视图加载中的所有其他代码运行之后,此代码作为 setup() 函数运行。

        let image = UIImage(systemName: "paperplane")?.withTintColor(.black, renderingMode: .alwaysOriginal)
        
        let button = UIBarButtonItem(image: image,
                                     style: .plain,
                                     target: self,
                                     action: #selector(showDMController))
        
        self.navigationItem.rightBarButtonItem = button

【问题讨论】:

此代码不会导致问题。您确定控制器嵌入在导航 vc 中吗? 【参考方案1】:

试试这个经过测试并为我工作的代码。

let image = UIImage(systemName: "paperplane")?.withTintColor(.black, renderingMode: .alwaysOriginal)
    
    let button = UIBarButtonItem(image: image,
                                 style: .plain,
                                 target: self,
                                 action: #selector(showDMController))
    
    self.navigationController?.navigationBar.topItem?.rightBarButtonItem = button

我已添加topItem 以添加rightBarButton。如果这不能解决您的问题,请告诉我。

【讨论】:

【参考方案2】:

在你的 UIViewController 类中,在 viewDidLoad() 方法中编写这段代码

override func viewDidLoad() 
    super.viewDidLoad()
    let rightBarButton = UIButton(type: .custom)
    rightBarButton.contentMode = .scaleAspectFit
    rightBarButton.setImage(yourImage, for: .normal)
    rightBarButton.setImage(yourImage, for: .selected)
    rightBarButton.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(yourGestureRecognizer)))
    navigationItem.rightBarButtonItem = UIBarButtonItem(customView: rightBarButton)
    navigationItem.rightBarButtonItem?.style = .plain


@objc func yourGestureRecognizer() 
   print("yourGestureRecognizer called")

【讨论】:

以上是关于self.navigationItem.rightBarButtonItem = 按钮不起作用?的主要内容,如果未能解决你的问题,请参考以下文章