UIImageView добавлен в NSArray не отвечает - PullRequest
0 голосов
/ 01 марта 2012

Я довольно новичок в Objective-C, я впервые не знаю, что делать.

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

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

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

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

@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]];
    }
}

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

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Нет необходимости хранить 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];
0 голосов
/ 01 марта 2012

Вы пытались перечислить через массив, используя:

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

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

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

NSMutableArray* mutableArray = [NSMutableArray array];

И какие свойства вы установили для imgArray на странице?Вы сохраняете значения?

Вам нужно больше кода для более полного понимания.

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