0

関数が呼び出されたときに別の(「アクティブな」)画像に変更したい場合と、別の関数が呼び出されたときに前の画像に変更したいという UIImageView があります。これはコードです:

- (NavButton *)initWithFrame:(CGRect *)fr andImage:(UIImage *)img andActiveImage:(UIImage *)acImg {
    NavButton *a = [[NavButton alloc] initWithFrame:*fr];
    [a setBackgroundColor:[UIColor clearColor]];
    UIImageView *aImg = [[UIImageView alloc] initWithFrame:CGRectMake(8.5, 8.5, 28, 28)];
    aImg.tag = 13;
    aImg.image = img;
    self.orginalImage = img;
    self.activeImage = acImg;
    [a addSubview:aImg];
    return a;
}

- (void)setIsActive:(NSNumber *)isActive {
    self.active = isActive;
    if ([isActive isEqualToValue:[NSNumber numberWithBool:NO]]) {
        [self undoActive];
    } else {
        [self redoActive];
    }
}

- (void)undoActive {
    UIImageView *a = (UIImageView *)[self viewWithTag:13];
    a.image = self.orginalImage;
}

- (void)redoActive {
    UIImageView *a = (UIImageView *)[self viewWithTag:13];
    a.image = self.activeImage;

}

呼び出すと[btn setIsActive:[NSNumber numberWithBool:YES]];、または[btn setIsActive:[NSNumber numberWithBool:NO]];その両方で画像が削除されますが、どちらも呼び出さないと、画像はそこに残ります。では、それらを呼び出すと、ボタンの画像が正しい画像に変更されるようにするにはどうすればよいですか?

4

2 に答える 2