Использование переменной в выражении для ссылки на изображение, хранящееся в UIImageView - PullRequest
0 голосов
/ 27 августа 2009

ОБНОВЛЕНО Прокрутите вниз, чтобы увидеть вопрос, заданный повторно, более четко .... Если у меня есть имя определенного UIImageView (IBOutlet), хранящегося в переменной, как я могу использовать его для изменения отображаемого изображения. Я пробовал это, но это не работает.

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

NSString *TmpImage = @"0.png";
NSString *Tst = @"si1_1_2";

TmpImage = @"1.png";
UIImage *sampleimage = [[UIImage imageNamed:TmpImage] retain];


((UIImageView *) (Tst)).image = sampleimage;    // This is the line in question 
[sampleimage release];

пересчитанной:

У меня есть куча изображений на экране .... UIImageView * s1, * s2, * s3 и т. Д. До * s10
Теперь предположим, что я хочу обновить изображение, отображаемое на каждом изображении.
Вместо того, чтобы делать
s1.image = sampleimage;
s2.image = sampleimage;
:
s10.image = sampleimage;

Как я могу написать цикл for, чтобы перейти от 1 до 10, а затем использовать цикл var как часть строки, которая обновляет изображение.
Как то так.
для (i = 1; i <- 10; ++ i) <BR> s (i) .image = sample; // Я знаю, что не работает


Основной вопрос: как мне включить переменную как часть оператора для доступа к изображению? Не зацикливайтесь на моем примере. Основной вопрос - как использовать переменную как часть доступа к некоторому элементу / объекту.

Итог ... Если я могу встроить имя UIImageView в объект NSString, как я могу затем использовать этот объект NSString для управления UIImageView.

Спасибо!

1 Ответ

1 голос
/ 27 августа 2009

Тьфу! Ваша линия в вопросе:

((UIImageView *) (Tst)).image = sampleimage;

приводит указатель строки как указатель UIImageView - вы в основном говорите, что указатель на строку на самом деле является указателем на UIImageView! Он скомпилируется (потому что компилятор с радостью примет ваше утверждение), но, конечно, завершится с ошибкой при запуске.

Вам необходимо объявить переменную типа UIImageView. Это может держать любой вид, который вы хотите установить изображение. Таким образом, ваш код может выглядеть следующим образом:

NSString *TmpImage = @"0.png";
UIImageView *myImageView;

If (someCondition == YES) {
    myImageView = si1_1_2;  //Assuming this is the name of your UIImageView
} else {
    myImageView = si1_1_3;  //etc
}

UIImage *sampleimage = [UIImage imageNamed:TmpImage];  //no need to retain it
myImageView.image = sampleImage;

Надеюсь, это имеет смысл!

Редактировать : Я должен добавить, почему вы пытаетесь иметь несколько UIImageViews? Поскольку изображение UIImageView может быть изменено в любое время (и фактически может содержать много), не лучше ли иметь только один UIImageView и просто изменить изображение в нем? *

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