通过附加具有可更改值的通用名称来标识对象名称。这可能吗?

时间:2010-08-13 11:32:37

标签: iphone objective-c tags naming-conventions sender

假设我有5个UIImageViews,名为 此搜索 图像2 图像3 图像4 和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

迈克尔

1 个答案:

答案 0 :(得分:0)

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

编辑,在我的评论中折叠:您的对象名称没有具体化 - 您不能说NSObject foo;然后能够使用@"foo"进行一些查找来引用它,除非您明确说明制作一个数组映射名称到对象。见another answer我给出了类似的问题。