0

我正在尝试更改 UIImageView 的图像,为此,我正在获取带有 viewWithTag 的 UIImageView,我遇到了消息“-[UIView setImage:]: unrecognized selector sent to instance 0x9161390”的崩溃

我知道我必须投射对象,而且我已经这样做了:

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

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

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

我遇到了同样的错误。

任何人都可以看到我错过了什么?

谢谢!

编辑:

好吧,感谢(真的很快!)的答案。我能修好它。

我正在使用:

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

但是 UIImageView 在 ScrollView 中而不是在主视图中,因此使用:

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

相反,修复它。

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

再次感谢!

4

2 回答 2

1

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

在这里,您传递了两个参数setImage

可能这会对你有所帮助。

于 2013-01-08T20:48:17.340 回答
0

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

这与其他人在您的评论中发布的内容相吻合:您发布的代码非常模糊,并且由于您在使用objectForKey时没有显示是什么data,所以这是对问题所在的猜谜游戏。

于 2013-01-08T20:41:07.687 回答