2012-03-01 2 views
0

Я довольно новичок в Objective-C, это первый раз, когда я действительно не знаю, что делать.UIImageView добавлен в NSArray не отвечает

У меня есть класс - Parser - который создает UIImageViews, init S их с изображениями и добавляет их к UIView. Класс также добавляет эти UIImageViews в NSMutableArray - imgArray, что является собственностью другого класса - Page.

Затем, нажатием одной кнопки, я называю Page класс от Manager класса, петля через imgArray и попытаться установить новые образы для UIImageViews в массиве.

Не работает. На самом деле я ничего не делаю с UIImageViews не работает. Я стараюсь [img removeFromSuperView], [img setHidden:YES] и больше. Это не ответ.

Здесь я объявляю свойство массива в страницу:

@property (nonatomic, retain) NSMutableArray *imgArray; 

Вот код из Parser, где я создаю изображение и добавить его в массив:

UIImageView *img = [[UIImageView alloc] initWithFrame: frame]; 
     NSString *name = [c imageSource]; 
     [img setImage: [UIImage imageFromBook: name]]; 
     [view addSubview: img]; 
     [c setImage:img]; 
     if (!page.imgArray) 
     { 
      page.imgArray = [[NSMutableArray alloc] init]; 
     } 
     [page.imgArray addObject:img]; 
     [img release]; 

Вот код цикла от менеджера:

- (void) set3D:(bool)is3D 
{ 
    Page *page = [[DataManager data] currentPage]; 
    int count = [page.imgArray count]; 

    for (int i = 0; i < count; i++) 
    { 
     UIImageView *img = [page.imgArray objectAtIndex:i]; 
     [img setImage:[UIImage imageNamed:image3DSource]]; 
    } 
} 

Заранее благодарим за любую помощь!

+0

Как об этом: ' для (INT I = 0 ; i pmk

+0

@pKoul Мне нужна ссылка на уже существующий UIImageView, чтобы изменить его ... – Light

+0

, пожалуйста, предоставьте нам код, в котором ваши изображения и ваш массив инициализированы – pmk

ответ

0

Вы пытались перечислить через массив с помощью:

for(UIImageView* imageView in page.imgArray) 
{ 
//Do code 
} 

Это скажет вам, если есть какие-либо imageViews в page.imgArray.

Как вы добавляете объекты в NSMutableArray и как вы инициализируете свой NSMutableArray. я помню, что проблема добавления объектов NSMutableArray но установка мой инициализации, чтобы решить это:

NSMutableArray* mutableArray = [NSMutableArray array]; 

Кроме того, какие свойства вы установите на imgArray в странице? Сохраняете ли вы значения?

Необходимо увидеть больше кода, чтобы получить более полное понимание.

+0

Спасибо, Мэтт, я попытался перечислить «для», и это не помогло. Я не знаю, какой еще код я должен публиковать, но я буду публиковать столько, сколько могу теперь в своем вопросе. – Light

+0

Можете ли вы поместить свой init для класса страницы? –

+0

Я не знаю, где именно init для класса Page ... Я фактически работаю над кодом, который является частью существующего сложного кода, который я получил. – Light

2

Нет необходимости хранить UIImageView в массиве.

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

#define K_MIN_IMGV 100 
#define K_MAX_IMGV 120 

- (void) setupViews 
{ 
    for (NSInteger count = K_MIN_IMGV; count < K_MAX_IMGV; ++count) 
    { 
     UIImageView *imgV = // create image view, set properties 
     imgV.tag = count; // tag the views for easy retrieval later 
     ... 
     [mainView addSubview: imgV]; // add subviews 
     [imgV release], imgV = nil; // mainView now manages, release our allocation 
    } 
}  

// как установить новые изображения

- (void) setupNewImages 
{ 
    for (NSInteger count = K_MIN_IMGV; count < K_MAX_IMGV; ++count) 
    { 
     UIImageView *imgV = (UIImageView *) [mainView viewWithTag: count]; // retrieve imageView 
     [imgV setImage: newImage]; // set new image 
    } 
} 

// Чтобы удалить ImageView, вы можете использовать

UIImageView *imgV = (UIImageView *) [mainView viewWithTag: 123]; 
[imgV removeFromSuperview]; 
Смежные вопросы