переменная-заполнитель для UIImageView - PullRequest
0 голосов
/ 10 августа 2011

Я знаю, что могу сделать это:

switch (imageNumber) {
     case 1: image1.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"jpg"]]; break;
     case 2: image2.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"jpg"]]; break;
     case 3: image3.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"jpg"]]; break;
     case 4: image4.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"jpg"]]; break;
}

Я хочу быть более эффективным в своем коде, поэтому мне интересно, есть ли способ сделать это так:*

Заранее спасибо за помощь!

Ответы [ 4 ]

1 голос
/ 10 августа 2011

Второй фрагмент кода, который вы вставили самостоятельно, на самом деле очень близок к решению. Вам просто нужно установить UIImageView *imageToChange; в качестве переменной экземпляра и затем сделать:

imageToChange.image = nil; // will clear the image on last selected image view
// if you don't need that, just remove that line and leave others
switch (imageNumber) {
    case 1: imageToChange = image1; break;
    case 2: imageToChange = image2; break;
    case 3: imageToChange = image3; break;
    case 4: imageToChange = image4; break;
}
imageToChange.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"jpg"]];
1 голос
/ 10 августа 2011

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

NSArray* imageViews = [NSArray arrayWithObjects: image1, image2, image3, image4, nil];

UIImageView* theImage = [imageViews objectAtIndex: imageNumber-1];
UIImage* theImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"jpg"]];

Вы хотели бы проверить imageNumber, чтобы убедиться, что он находится в пределах диапазона.

0 голосов
/ 10 августа 2011

Другим способом может быть использование массива

UIImageView *iv[] = {
  image1,
  image2,
  image3,
  image4,
};
if (imageNumber>=0 && imageNumber<4) 
  iv[imageNumber].image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]
                                           pathForResource:@"imageName" 
                                                    ofType:@"jpg"]]
0 голосов
/ 10 августа 2011

Как насчет -

UIImage* theImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"jpg"]];
switch ...
    case 1:image1.image = theImage; break;
    case 2:...

Вы также можете сделать -

MyImageType* tempImageObj = nil;
switch ... {
    case 1:tempImageObj = &image1; break; // Or just image1, if ".image" is a property, not a field
    case 2:...
}
tempImageObj ->image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"jpg"]];  // Or "." instead of "->" if property.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...