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 = 按钮不起作用?的主要内容,如果未能解决你的问题,请参考以下文章