扩展UIButton for iOS的问题
问题描述:
我试图扩展UIButton,但我一直在ColorButton的实现文件的初始化器中获得“EXC_BAD_ACCESS”。扩展UIButton for iOS的问题
ColorButton的标题。
#import <Foundation/Foundation.h>
@interface ColorButton : UIButton {
UIImage * originalImage;
}
@property (nonatomic,readonly) NSString * buttonName;
-(id) initButtonWithName:(NSString *) color;
-(void) setOriginalImage;
-(void) setImage:(UIImage *) image;
@end
ColorButton实施
#import "ColorButton.h"
@implementation ColorButton
@synthesize buttonName;
-(id) initButtonWithName:(NSString *) color {
if ((self = (ColorButton *)[UIButton buttonWithType:UIButtonTypeCustom])) {
buttonName = color;
[self setTitle:buttonName forState:UIControlStateNormal]; //This is the line of the "EXC_BAD_ACCESS" error.
[self setBackgroundImage:[self backgroundImageForDevice:color] forState:UIControlStateNormal]; // This line gets the error too. If I comment the line before it out.
}
return self;
}
-(UIImage *) backgroundImageForDevice:(NSString *) color {
color = [color stringByAppendingString:@"Bubble"];
if ([[[UIDevice currentDevice] model] isEqualToString:@"iPad"] ||[[[UIDevice currentDevice] model] isEqualToString:@"iPad Simulator"]) {
color = [color stringByAppendingString:@"-iPad"];
}
color = [color stringByAppendingString:@".png"];
return [UIImage imageNamed:color];
}
-(void) setOriginalImage {
[self setBackgroundImage:originalImage forState:UIControlStateNormal];
}
-(void) setImage:(UIImage *) image {
[self setImage:image forState:UIControlStateNormal];
}
@end
答
你不能投了UIButton *
实例为ColorButton *
类型。
你要记住,你从UIButton
ColorButton
继承,而不是其他方式,这意味着ColorButton
每个实例是UIButton
定义,但相反的是不正确的。
这里是具有确切同样的问题:)
objective C: Buttons created from subclass of UIButton class not working
另一个线程