#objective-c #cocoa-touch #uiimage #nsmutablearray
#objective-c #cocoa-touch #uiimage #nsmutablearray
Вопрос:
Я создаю простую игру, которая требует, чтобы я рисовал несколько UIImages во многих разных местах. Моя проблема здесь в том, что мне нужно добавить пользовательские изображения в NSMutableArray и получить к ним доступ позже. Использование NSStrings для представления изображений (например, для путей) здесь не сработает, поэтому мне нужно знать, как изменить изображения для каждого UIImage в массиве.
Мой код следующий (по крайней мере, для доступа к NSMutableArray). NSMutableArray объявлен в моем файле .h и инициализирован другим методом.
for (int a = 0; a <= [theArray count]; a ) {
// I make a UIImage, which I will draw later
UIImage *theImage = [theArray objectAtIndex:a];
// then I do the drawing
}
Это работает нормально. Моя проблема в том, что я не могу понять, как изменить конкретный объект в NSMutableArray. Как я могу это сделать?
Кстати, я добавляю UIImages в NSMutableArray с помощью следующего кода.
(void) createCarWithImage:(NSString*)theImageName {
UIImage *anImage= [UIImage imageNamed:theImageName];
[theArray addObject:anImage];
}
Ответ №1:
Я думаю, вы хотите использовать этот метод:
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject
например:
[theArray replaceObjectAtIndex:4 withObject:someOtherImage];
Ответ №2:
Просто измените каждое из них UIImage
в NSMutableArray
как есть, у вас есть только указатель на фактические данные. То есть, независимо от того, какой указатель вы используете для изменения данных, данные изменяются для каждого указателя.
Кроме того, вы также можете перебирать свои UIImage
s с:
for (UIImage *img in theArray)
{
//send messages to img
}
Ответ на комментарий
Вы можете изменить UIImage
по индексу 4 с помощью:
UIImage *image = [theArray objectAtIndex:4];
//send messages to image
Комментарии:
1. Как мне изменить изображение? Это был мой вопрос, но этот ответ не говорит мне, как.
2. Измените его, отправив каждому изображению сообщения, на которые
UIImage
отвечает. Вам нужно масштабирование, перевод и т.д. Или вы хотите изменять пиксель за пикселем?3. Я не думаю, что мы здесь понимаем друг друга. Как я могу изменить изображение без использования
for
цикла? Например, если бы я хотел изменить изображение с индексом @ «4», что я должен сделать?4. Я обновил свой ответ, чтобы ответить на ваш текущий вопрос. Что касается модификации, это похоже на манипулирование любым другим объектом. Вы отправляете ему сообщения, на которые он отвечает.