Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改UIImageView的图像属性时出现问题_Ios_Objective C_Uiview_Uiimageview_Uiimage - Fatal编程技术网

Ios 更改UIImageView的图像属性时出现问题

Ios 更改UIImageView的图像属性时出现问题,ios,objective-c,uiview,uiimageview,uiimage,Ios,Objective C,Uiview,Uiimageview,Uiimage,我有一个UIImageView,当一个函数调用时,我希望更改为另一个(“活动”)图像,当另一个函数调用时,我希望更改回之前的图像。代码如下: - (NavButton *)initWithFrame:(CGRect *)fr andImage:(UIImage *)img andActiveImage:(UIImage *)acImg { NavButton *a = [[NavButton alloc] initWithFrame:*fr]; [a setBackgroundC

我有一个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]]
两次都会删除图像,但当我不调用任何一次时,图像会保留在那里。那么,当我呼叫他们时,如何使其更改按钮的图像为正确的图像?

只需执行以下检查即可:

if (![isActive boolValue]) {

然后,进行一些调试,添加一些断点和/或日志记录。检查实际接收到的值。标志设置是否正确。图像设置是否正确。是否有任何
nil

只需执行以下检查即可:

if (![isActive boolValue]) {

然后,进行一些调试,添加一些断点和/或日志记录。检查实际接收到的值。标志设置是否正确。图像设置是否正确。如果任何内容
nil

都可以为图像视图指定两个图像:一个为“图像”属性,另一个为“HighlighteImage”属性,而不是重复将图像指定给imageview。如果要在图像之间切换,请将布尔属性“highlighted”设置为是或否。

您可以将两个图像指定给图像视图,而不是重复将图像指定给图像视图:一个指定给“image”属性,另一个指定给“highlightedImage”属性。当您想要在图像之间切换时,将布尔属性“highlighted”设置为YES或NO。

现在,当我尝试记录图像时,当我在
initWithFrame:andImage:andActiveImage:
中记录
activeImage
时,我会得到一个UIImage实例,但当我尝试在
redoActive
中记录相同的变量时,它会记录
(null)
。我该如何解决这个问题?您如何定义
orginalImage
activeImage
?我在第一个函数中定义了它们,它们是属性,我已经合成了它们。您不在第一个方法中定义它们,而是使用它们。您是如何定义它们的?它们是
strong
?@property(strong,单原子)UIImageNow,当我尝试记录图像时,当我在
initWithFrame:andImage:andActiveImage:
中记录
activeImage
时,我会得到一个UIImage实例,但当我尝试在
redoActive
中记录相同的变量时,它会记录
(null)
。我该如何解决这个问题?您如何定义
orginalImage
activeImage
?我在第一个函数中定义了它们,它们是属性,我已经合成了它们。您不在第一个方法中定义它们,而是使用它们。您是如何定义它们的?它们是
strong
?@property(strong,单原子)UIImage吗