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



我在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 Tap Me[8145:c07]-[UIImage setTag:]:无法识别的选择器发送到实例0x752e820 2013-08-08 12:26:48.597 Tap Me[8145:c07]*由于未捕获的异常"NSInvalidArgumentException"而终止应用程序,原因:'-[UIImage setTag:]:无法识别的选择器发送到实例0x752e820'*第一个抛出调用堆栈:(0x1c92012 0x10cfe7 0x1d1d4bd 0x1c81bbc 0x1c8194e 0x2d5c 0xf51c7 0xf5232 0x100c25 0x003a3 0xfdee3 0xfe167 0xfe1a7 0x46a0a2 0x45bb99 0x45bc14 0x10e3705 0x172c0 0x17258 0xd8021 0xd857f 0xd76e8 0x46cef 0x46f02 0x24d4a 0x16698 0x1beddf9 0x1bedad0 0x1c07bf5 0x1c07962 0x1c38b6 0x1c37f44 0x1c37e1b 0x1bec7e3 0x1bec668 0x13fc 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]];
    }

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

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

这种方法有效,并且是干净的

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

如果以后要检索特定的映像,我只需要创建另一个UIImage实例,并使用imageNamed:类方法来获取所需的映像。像这样:

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

最新更新