是否可以单独在uiimageview中标记uiimage?

时间:2013-08-08 19:01:58

标签: objective-c uiimageview uiimage tagging

我在UIImageView和UIImage的类引用中搜索,但没有找到有关标记的任何信息。

在我的代码中,我为我的UIImageView标记了我的NSMutableArray图像中的所有图像,所以我可以在以后检索标记:

[[images objectAtIndex:0] setTag:1];
[[images objectAtIndex:1] setTag:2];
[[images objectAtIndex:2] setTag:3];
...

这会导致我的应用程序在运行时崩溃。

输出显示:

2013-08-08 11:26:48.596点击我[8145:c07] - [UIImage setTag:]:无法识别的选择器发送到实例0x752e820 2013-08-08 11:26:48.597点击我[8145:c07] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [UIImage setTag:]:无法识别的选择器发送到实例0x752e820'*第一次抛出调用堆栈:(0x1c92012 0x10cfe7e 0x1d1d4bd 0x1c81bbc 0x1c8194e 0x2d5c 0xf51c7 0xf5232 0x100c25 0x3003a3 0xfdee3 0xfe167 0xfe1a7 0x46a0a2 0x45bb99 0x45bc14 0x10e3705 0x172c0 0x17258 0xd8021 0xd857f 0xd76e8 0x46cef 0x46f02 0x24d4a 0x16698 0x1beddf9 0x1bedad0 0x1c07bf5 0x1c07962 0x1c38bb6 0x1c37f44 0x1c37e1b 0x1bec7e3 0x1bec668 0x13ffc 0x267d 0x25a5)libc ++ abi.dylib:终止调用抛出异常(lldb)

我稍后需要访问当前在UIImageView中显示的图像的标签是否具有10或更低或10以上的标签:

 if ((picImageView.tag<=10 && [[sender currentTitle]isEqual:@"soap"])||    (picImageView.tag>10 && [[[sender titleLabel] text]isEqual:@"cheese"]))
    {
        count++;
        [picImageView setImage:[images objectAtIndex:arc4random()%imageNames.count]];
    }
else
    {
        [picImageView setImage:[images objectAtIndex:arc4random()%imageNames.count]];
    }

我是客观的新手。如果有人可以回复显示如何向UIImage添加标签的代码,那将对我有很大帮助。提前谢谢你,抱歉这个愚蠢的问题。

2 个答案:

答案 0 :(得分:2)

UIView的所有子类都具有tag属性。 UIImage不是UIView的子类,因此它不会继承tag属性。

如果您想稍后检索特定图像,我只想创建另一个UIImage实例并使用imageNamed:类方法获取您想要的图像。像这样:

UIImage *yourImage = [UIImage imageNamed:@"yourImage.png"];

答案 1 :(得分:2)

这听起来像是一个糟糕的设计,我建议用您的标识属性(int或NSString或任何你想要的东西)扩展UIImage,并在NSMutableArray上使用它时检索此属性。

这种方法很有效,很干净