Использование переменной внутри переменной target-C - PullRequest
1 голос
/ 17 марта 2012

РЕДАКТИРОВАТЬ: {
больше не нужна помощь!

Я использовал теги и несколько циклов, чтобы ссылаться на них в любое время.Я никогда не знал, что вы можете хранить так много изображений в одном UIImageView!}

У меня есть приложение, которое работает с большим количеством изображений, и я хочу использовать целое число внутри имени переменной, поэтому мне не нужно писать код для каждого изображения.Пример:

 - (void)addIconClicked {
 if (icons < 28) {
      icons += 1;
 }

 if (icons == 2) {
 UIImageView * iconImage2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon1.png"]];
 //modify image view like setting the frame, setting the title, etc... (not important)
 }

 else if (icons == 3) {
 // iconImage 3 set up
 }

это продолжается вплоть до iconImage26!

, поэтому мне было интересно, смогу ли я использовать целые "значки" как часть имени переменной, поэтому я ненеобходимо выполнить код 26 раз! !!

Пример:

 - (void)addIconClicked {
  if (icons < 28) {
  icons += 1;
  }

 /*some how insert the "icons" int where (icons) is. Like NSString uses 
 stringWithFormat ([NSString stringWithFormat:@"%i", icons])*/
 UIImageView * iconImage(icons) = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"icon%i.png", icons]]];
 }

----- редактировать ----- (чтобы уточнить, что я хочу)

Моя проблема в том, что я хочу создать неограниченное количество просмотров изображений, но если я использую одну и ту же переменную более одного раза, она будет отображаться в представлении нормально, но будет освобождена, и я больше не смогу ее редактировать.Пример:

 - (void)addIconClicked {
 if (icons < 28) {
  icons += 1;
  }

 NSString * iconName = [NSString stringWithFormat:@"icon%i.png", icons];
 //if i ran this 100 times, 100 images would show up, but i can no longer edit any of them except the newest.
 iconImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:iconName]];
 }

, поэтому мне нужно знать, как создавать неограниченное количество изображений, которые я все еще могу редактировать индивидуально.

Я думал, что смогу использовать целочисленное значение внутриимя переменной, когда я ее создаю, но я думаю, что не могу: (

, поэтому, если кто-нибудь знает, пожалуйста, объясните !!

, чтобы подвести итог ...

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

Мне просто нужен способ создать неограниченное количество глобальных UIImageView, которые я могу редактировать и получать к ним доступ в любое время.

Ответы [ 2 ]

0 голосов
/ 17 марта 2012

Вы можете использовать массив для хранения ссылок UIImageView. Или вы можете установить их теги и найти их позже, используя viewWithTag.

РЕДАКТИРОВАТЬ: Хорошо, я сейчас дома, и я могу объяснить:

Использовать теги:

UIImageView * anImageView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat@"icon%i.png",icons]]];
anImageView.tag=icons;
[parentView addSubview: anImageView];


UIImageView *theOneYouWant = (UIImageView)[parentView viewWithTag:someTag];

или используйте c-массив указателей UIImageView для хранения ссылок, если вы не возражаете против области действия:

UIImageView * imageViews[28]; // put this into class interface
imageViews[icons]= [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat@"icon%i.png",icons]]];
0 голосов
/ 17 марта 2012

Лучший способ сделать это с массивом.

NSMutableArray* allIcons = [NSMutableArray array]; //First, you'll need this empty array.

//Then, when you create your icon...
NSString* iconName = [NSString stringWithFormat:@"icon%lx.png",icons];
UIImageView * newIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:iconName]];
[allIcons addObject:newIcon]; //This adds the icon at the next index, starting at 0.

Затем, когда вы используете ваши иконки вместо icon1, icon2 и т. Д., Используйте [allIcons objectAtIndex:0][allIcons objectAtIndex:1] и т. Д.

Это довольно распространенная концепция - вам следует рассмотреть несколько начинающих уроков по какао;Вы можете найти его в использовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...