Swift - 如何在自定义类中设置UIBarButtonItem的图像

4

你好,我有一个自定义类用于UIBarButtonImage:

class CheckBoxBarButton : UIBarButtonItem {

    // images
    let checkedImage = UIImage(named: "img_checked")! as UIImage
    let unCheckedImage = UIImage(named: "img_unchecked")! as UIImage

    //bool property
    var isChecked: Bool = false {
        didSet{
            if isChecked == true {

                // here I want to set the checked image for my bar button

            }else{

                // here I want to set the unchecked image for my bar button
            }
        }
    }

    override func awakeFromNib() {

// here I want to add a target when the button is touched.
// the actual code is returning an error because UIBarButtonImage doesnt not have addtarget
        self.addTarget(self, action: #selector(CheckBoxBarButton.buttonClicked(_:)), forControlEvents: UIControlEvents.TouchUpInside)

        self.isChecked = false
    }
}

有什么线索吗?

为什么不在didSet中做你需要的任何事情呢? - Leo Dabus
2个回答

2

只需使用 image 属性即可。

var isChecked: Bool = false {
    didSet{
        if isChecked == true {
            self.image = checkedImage
        }else{
            self.image = unCheckedImage
        }
    }
}

0

您可以使用自己的图像创建一个按钮,并将UIBarButtonItemcustomView设置为您的按钮:

let button = UIButton()
button.setImage(checkedImage )// or button.setImage(unCheckedImage) based on the conditions
button.frame = CGRectMake(0, 0, 30, 30)
self.customView = button

或者如果已经定义了按钮,则设置customView图像本身:

self.customView.setImage(checkedImage )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接