Проблема расширения UIButton для iOS - PullRequest
0 голосов
/ 24 мая 2011

Я пытаюсь расширить UIButton, но получаю «EXC_BAD_ACCESS» внутри инициализатора файла реализации ColorButton.

Заголовок 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

1 Ответ

2 голосов
/ 23 июня 2011

Вы не можете привести UIButton * экземпляр к типу ColorButton *.

Вы должны помнить, что вы ColorButton наследует от UIButton, а не наоборот, это означает, что каждый экземплярColorButton является UIButton по определению, но обратное неверно.

Вот еще один поток, у которого точно такая же проблема:)

цель C: кнопки, созданные из подкласса класса UIButton, не работают

...