Определение имени объекта путем добавления общего имени с изменяемым значением. Это возможно? - PullRequest
0 голосов
/ 13 августа 2010

скажем, у меня есть 5 UIImageViews, названных image1 image2 image3 image4 и изображение5.

И у меня есть 5 кнопок, значения тегов которых установлены на соответствующие изображения, которые их накладывают, поэтому 1 - 5.

Если кнопка 1 нажата, я получаю значение тега примерно так

NSNumber buttonNumber = [sender tag];

Затем я хочу выполнить некоторые методы для соответствующего изображения (изображение1). Но я хочу использовать один и тот же метод для всех кнопок.

Таким образом, мой вопрос, получив тег, как я могу идентифицировать соответствующее изображение (с тем же номером после его имени). Решение, которое у меня есть до сих пор, которое немного затянуто, заключается в использовании переключателя:

  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 голосов
/ 13 августа 2010

Я думаю, что вы ответили на свой вопрос - используйте массив для хранения ваших UIImageViews и используйте тег в качестве индекса для этого массива.

РЕДАКТИРОВАТЬ, сворачивая в мой комментарий: имя ваших объектов неreified - вы не можете сказать NSObject foo;, а затем сможете ссылаться на него с помощью некоторого поиска, используя @"foo", если вы явно не сделаете массив, сопоставляющий имена объектам.См. другой ответ Я дал аналогичную проблему.

...