UI CheckBox按钮不更改图像

时间:2017-02-08 01:00:32

标签: ios objective-c

我正在尝试为自定义复选框创建的UI按钮设置一个类。出于某种原因,我的图像没有被Xcode设置。然而,我的应用程序中有其他类正在设置图像而没有问题。

Checkbox.h

#import <UIKit/UIKit.h>

@interface checkBoxButton : UIButton

@property (nonatomic,assign) IBInspectable BOOL checked;


@end

Checkbox.m

#import "checkBoxButton.h"

@implementation checkBoxButton

-(id) init {
    self = [super init]; 
    if(self) {
        [self addTarget:self action:@selector(changeState) forControlEvents:UIControlEventTouchUpInside];
       }
       return self;
}

- (void)checkedBox:(BOOL) checked{
    self.checked = checked;
    if(!self.checked){
        [self setImage: [UIImage imageNamed:@"checked.png"] forState:UIControlStateSelected];
    } else {
        [self setImage: [UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
    }
}

- (void) changeState {
    self.checked = !self.checked;
    [self sendActionsForControlEvents:UIControlEventValueChanged];
}

@end

2 个答案:

答案 0 :(得分:0)

-(id) init {
self = [super init];
if(self) {
    self.checked = !self.checked;
    [self addTarget:self action:@selector(checkedBox:) forControlEvents:UIControlEventTouchUpInside];
}
return self;

}

- (void)checkedBox:(BOOL) checked{
if(!self.checked){
    self.checked = checked;
    [self setImage: [UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
} else {
    self.checked = !checked;

    [self setImage: [UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
}

}

试试吧。

答案 1 :(得分:0)

  

UIButtonBox

//
//  UIButtonBox.h
//   
//
//  Created by Nischal Hada on 9/16/15.
//  Copyright (c) 2015 Nischal Hada. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface UIButtonBox : UIButton
@property (nonatomic) BOOL isSelected;
@property (nonatomic,strong) NSString *selectImage;
@property (nonatomic,strong) NSString *deSelectImage;
- (void)select;
- (void)deselect;
- (void) setBackgroundImage:(UIImage *)image forState:(UIControlState)state;
@end



//
//  UIButtonBox.m
//   
//
//  Created by Nischal Hada on 9/16/15.
//  Copyright (c) 2015 Nischal Hada. All rights reserved.
//

#import "UIButtonBox.h"



@implementation UIButtonBox

- (void) layoutSubviews {
    [super layoutSubviews];
}

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (id) initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
    }
    return self;
}

/*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.
 - (void)drawRect:(CGRect)rect
 {
 // Drawing code
 }
 */

- (void) setBackgroundImage:(UIImage *)image forState:(UIControlState)state {
    [super setBackgroundImage:image forState:state];
}

- (void) setBackgroundImage:(NSString *)imageName {
    self.isSelected = ([imageName isEqualToString:self.deSelectImage])?YES:NO;
    [self setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
    [self setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateSelected];
}

- (NSString *)selectImageName {
    return self.selectImage;
}

- (NSString *)deSelectImageName {
    return self.deSelectImage;
}

- (void)select {
    [self setBackgroundImage:self.deSelectImage];
}
- (void)deselect {
    [self setBackgroundImage:self.selectImage];
}

@end
  

CountrySelectCell

//
//  CountrySelectCell.h
//   
//
//  Created by Nischal Hada on 12/12/15.
//   
//

#import <UIKit/UIKit.h>
#import "UIButtonBox.h"

@interface CountrySelectCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UILabel *lblName;

@property (nonatomic) BOOL isSelected;
@property (weak, nonatomic) IBOutlet UIButtonBox *btnCHeckBox;
- (IBAction)actionCheckBox:(id)sender;



@end





//
//  CountrySelectCell.m
//   
//
//  Created by Nischal Hada on 12/12/15.
//   
//

#import "CountrySelectCell.h"
#import "Constants.h"


@implementation CountrySelectCell

- (void)awakeFromNib {
    self.lblName.font =  [UIFont fontWithName:REGULAR_PROXIMANOVA_FONT size:SIZE_REGULAR__FONT];
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}


#pragma mark -
#pragma mark Object Methods
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
        self.isSelected = NO;
    }
    return self;
}

#pragma mark -
#pragma mark IBAction Methods

- (IBAction)actionCheckBox:(id)sender {
    self.isSelected = !self.isSelected;
    (self.isSelected)?[self.btnCHeckBox select]:[self.btnCHeckBox deselect];
}

@end
CountrySelectVC.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *simpleTableIdentifier = @"CountrySelectCell";
 CountrySelectCell *cell = (CountrySelectCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

 if (cell == nil)
 {
 NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CountrySelectCell" owner:self options:nil];
 cell = [nib objectAtIndex:0];
 }

 cell.lblName.text = [[tableData objectAtIndex:indexPath.row]uppercaseString];
 cell.selectionStyle = UITableViewCellSelectionStyleNone;

 cell.btnCHeckBox.deSelectImage  = @"checkbox.png";
 cell.btnCHeckBox.selectImage = @"uncheckbox.png";
 [cell.btnCHeckBox setBackgroundImage:[UIImage imageNamed:@"uncheckbox.png"] forState:UIControlStateNormal];


 return cell;


}