如何使用ex更改UIImageView的图像[触摸视图]

时间:2013-12-20 16:54:48

标签: ios objective-c uiimageview uiimage

我正在尝试制作一个简单的应用程序,以便更好地理解Obj-C。

我想要完成的是在触摸结束时更改我的UIImageView图片的功能。这是一个简单的任务,具有静态功能circle.image = [UIImage imageNamed:@"newImage.png"];但我需要它是动态的,所以我不需要为每个图像键入这一行。

在某些情况下,我一直在使用[touch view] (请参阅下面的示例代码),但这不可能用于更改图像:在对象上找不到属性“图像”输入UIImage

我希望有人能给我替代方案,我会非常感谢一些示例代码,提前谢谢:)

ViewController.h:

@interface ViewController : UIViewController{

    IBOutlet UIImageView *circle;
    IBOutlet UIImageView *triangle;
    IBOutlet UIImageView *star;
    IBOutlet UIImageView *background;

}

ViewController.m

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

    UITouch *touch = [[event allTouches] anyObject];

    if([touch view] != background){

        [touch view].image = [UIImage imageNamed:@"newImage.png"];

    }

}

3 个答案:

答案 0 :(得分:1)

试试这个:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [[event allTouches] anyObject];
    if([touch view] != background){
        UIImageView *selected = (UIImageView *)[touch view];
        selected.image = [UIImage imageNamed:@"newImage.png"];
    }
}

答案 1 :(得分:1)

您不应使用“==”来比较对象(仅基元)。在任何情况下,最好检查对象是否是图像视图:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

    UITouch *touch = [[event allTouches] anyObject];

    if([touch.view isKindOfClass:[UIImageView class]]){

        [(UIImageView *)[touch view] image] = [UIImage imageNamed:@"newImage.png"];

    }
}

如果您的视图中有其他图像视图,您不希望参与此图像更改,那么您可能希望提供您想要更改的图像视图,标记以及检查标记值。如果声明而不是。

答案 2 :(得分:0)

您的代码并不知道[触摸视图]是uiimageview子类,它认为它是uiview并且uiview没有图像属性,因此您有错误。你应该这样做:

if([touch view] != background){
    if([touch view] == circle)
        circle.image = [UIImage imageNamed:@"newImage.png"];
    else if([touch view] == triangle)
        triangle.image = [UIImage imageNamed:@"newImage.png"];
     else if([touch view] == star)
        star.image = [UIImage imageNamed:@"newImage.png"];
}