“viewWithTag”的问题

时间:2013-01-08 20:29:41

标签: objective-c

我正在尝试更改UIImageView的iamge,为此,我正在使用viewWithTag获取UIImageView,我遇到了消息“ - [UIView setImage:]:无法识别的选择器发送到实例0x9161390 “

我知道我必须施放物体,我已经这样做了:

UIImageView *iv = (UIImageView *)[self.view viewWithTag:[[data objectForKey:@"tag"] intValue]];

[iv performSelectorOnMainThread:@selector(setImage:) withObject:img waitUntilDone:YES];

(我正在使用performSelectorOnMainThread,因为它是一个后台线程,但已尝试“iv.image = ...”)。

我收到同样的错误。

任何人都能看到我所缺少的东西吗?

Thnks!

编辑:

非常感谢(非常快!)的答案。我可以解决它。

我正在使用:

[self.view viewWithTag:[[data objectForKey:@"tag"] intValue]]

但是UIImageView在ScrollView中而不是主视图,所以使用:

[scroll viewWithTag:[[data objectForKey:@"tag"] intValue]]

相反,修复它。

(即使实际上没有设置图像,但我没有得到崩溃)。

再次感谢!

2 个答案:

答案 0 :(得分:1)

首先需要检查您获得的值是否为UIImageView类。可能存在从数据字典或数组中检索值的问题。可能是在tableView或ScrollView的子视图中,然后您需要取而不是self.view。它可能是不同的。所以你需要使用断点来调试你的代码。如果这个东西写了,那么检查你传递的setImage方法的参数。请详细说明您的方法然后我可以简单回答。

这里你传递了两个setImage的参数。

可能会对你有帮助。

答案 1 :(得分:0)

您可能会从非标签的数据中请求“密钥值”。我建议不要使用对象值作为键,因为它为这么多神秘问题打开了大门。

这与其他人在您的评论中发布的内容一致:您发布的代码非常模糊,而且因为您使用的是objectForKey而没有显示data是什么,所以这是一个猜测游戏问题是。