2016-07-14 4 views
3

Привет У меня есть пользовательский класс для UIBarButtonImage:Swift - Как установить образ UIBarButtonItem в пользовательском классе

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 
    } 
} 

Любой ключ?

+0

Почему вы не делаете то, что вам нужно внутри didSet? –

ответ

0

Вы можете создать кнопку с вашим изображением и установите customView из UIBarButtonItem в качестве кнопки:

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) 
0

Просто используйте image

var isChecked: Bool = false { 
    didSet{ 
     if isChecked == true { 
      self.image = checkedImage 
     }else{ 
      self.image = unCheckedImage 
     } 
    } 
} 
Смежные вопросы