0

假设我有 5 个 UIImageView,分别命名为 image1 image2 image3 image4 和 image5。

我有 5 个按钮,它们的标签值设置为覆盖它们的相应图像,所以 1 - 5。

如果按下按钮 1,我会像这样得到标签值

NSNumber buttonNumber = [sender tag];

然后我想对相应的图像(image1)执行一些方法。但我想对所有按钮使用相同的方法。

所以我的问题是,在检索到标签后,我如何识别相应的图像(名称后有相同的数字)。到目前为止,我的解决方案有点啰嗦,是使用开关:

  UIImageView *image;
        switch (buttonTag) {
            case 1:
                image = imageOverButton1;
                break;
            case 2:
                image = imageOverButton2;
                break;
            default:
                break;
// etc
        }

但这似乎不是很优雅。如果它是一个字符串,我当然可以使用

stringWithFormat:@"imageOverButton%i", buttonTag

那么对象有没有等价的操作呢?

我知道我也可以将按钮的背景图像设置为我想要的图像并从发件人那里提取 imageData 但出于各种原因我宁愿以上述方式进行操作。我想我也可以将 UIImageViews 添加到数组中并使用标签提取相关对象。

谢谢!:D

迈克尔

4

1 回答 1

0

我想你回答了你自己的问题 - 使用一个数组来保存你的 UIImageViews 并将标签用作该数组的索引。

编辑,折叠在我的评论中:你的对象的名称没有被具体化 - 你不能说NSObject foo;然后以后能够通过一些查找来引用它,@"foo"除非你明确地创建一个数组映射名称到对象。请参阅我对类似问题给出的另一个答案。

于 2010-08-13T11:36:11.097 回答