通过操作将 UIBarButtonItem 设置为 backBarButtonItem,不起作用

Posted

技术标签:

【中文标题】通过操作将 UIBarButtonItem 设置为 backBarButtonItem,不起作用【英文标题】:setting a UIBarButtonItem to backBarButtonItem with an action, does not work 【发布时间】:2018-01-23 12:32:34 【问题描述】:

当我将以下 UIBarButtonItem 分配给 backBarButtonItem 时,我得到一个带有我分配的标题的按钮,但从未调用过该操作。 改为使用leftBarButtonItem,将添加一个按钮并调用该操作。什么是压倒我的行动?我能做点什么吗?

 override func viewDidLoad() 
        super.viewDidLoad()
        let backItem = UIBarButtonItem(title: "Back",
                                       style: .plain,
                                       target: self,
                                       action: #selector(backNavigationClick))
        navigationItem.backBarButtonItem = backItem
    

    @objc func backNavigationClick() 
        print("back clicked")
    

【问题讨论】:

检查你的基类是否有代码覆盖了赋值 试试这个***.com/a/37554775/7084910 【参考方案1】:

如果您以这种方式使用它,您可以自定义按钮。

您需要替换此代码 navigationItem.backBarButtonItem = backItemnavigationItem.leftBarButtonItem = backItem

并在 backNavigationClick() 上添加此代码

@objc func backNavigationClick() 
    print("back clicked")
    self.navigationController?.popViewController(animated: true) ***

【讨论】:

正如我在问题中提到的,我知道可以使用 leftBarButtonItem 来完成,问题是您丢失了默认的后退箭头图像。用自定义图像替换它不是我想要的。 如果您只更改后退按钮标题,请使用以下代码:self.navigationController?.navigationBar.backItem?.title = "Anything Else" 或查看***.com/a/44919649/8367837

以上是关于通过操作将 UIBarButtonItem 设置为 backBarButtonItem,不起作用的主要内容,如果未能解决你的问题,请参考以下文章

通过外观为 UIBarButtonItem 设置背景图像不适用于其他 UIControlStates

UIActivityViewController 将 sourceView 设置为 UIBarButtonItem

如何解决 UIBarButtonItem 的色调问题?

如何将 UIImageView.image 设置为 UIBarButtonItem

如何以编程方式将自定义图像设置为 UIBarButtonItem

如何将 UIBarButtonItem tintcolor 设置为非默认 UIColor