我正在尝试为自定义复选框创建的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
答案 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;
}