Как перезагрузить scrollView с другим массивом в iphone

Я взял 2 массива изображений, например

A = ["l.jpg", "m.jpg", "n.jpg", "p.jpg", "q.jpg", "r.jpg"]

и

B = ["a.jpg", "b.jpg", "c.jpg"].

Затем для отображения изображений добавили scrollview с pagecontrol (количество страниц в page-control будет)

[количество массивов]

а также размер содержимого прокрутки также зависит от [array count] ie

scroll.width * array.count

Здесь, если есть 4 страницы, то 3 будут загружены в память, а при прокрутке предыдущее изображение будет выгружено.

1) Первоначально отображается массив изображений. 2) Затем по нажатию кнопки я заменяю scrollview.contentSize, pagecontrol.numberof страниц длиной массива B, а также выгружаю изображения, которые ранее были загружены массивом A.
3) Чтобы отобразить массив B, scrollview contentsize потребуется для быть маленьким и иметь количество страниц как 4. Итак, я снова сбрасываю свой режим прокрутки,

scrollView.contentSize = CGSizeMake (scrollView.frame.size.width * [количество массивов], scrollView.frame.size.height);

Затем я прокрутил до последнего изображения в массиве B, после последнего изображения, когда я пытаюсь перейти к следующему изображению, оно отображается как изображение «q.jpg» изображения массива A, которое не было выгружено должным образом.

Итак, как выгрузить все изображения из scrollview при перезагрузке из другого массива изображений.

Спасибо.


person Kirti Nikam    schedule 30.08.2012    source источник


Ответы (2)


Не тестировали, может быть, вы можете использовать цикл for, чтобы установить для всех свойств изображения subview значение nil?

for(int i = 0; i < previousImageArray.count; i++)
{
   UIImageView *imageView = [[myScrollView subviews] objectAtIndex:i];

   imageView.image = nil;
}

Если это не сработает, вы всегда можете жестко удалить подвиды:

// get all subviews inside your scrollview into an array
NSArray *subviews = [myScrollView subviews];

// loop through array, for each image view subview in your scrollview
// remove it from the superview (superview is your scroll view in this case)
for(int i = 0; i < subviews.count; i++)
{
    UIImageView *imageView = (UIImageView *)[subviews objectAtIndex:i];

    [imageView removeFromSuperview];
}

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

person Zhang    schedule 30.08.2012

По сути, это то, для чего предназначен UITableViewController. Вы можете динамически контролировать количество и порядок ячеек (в вашем случае изображения внутри настраиваемых ячеек) и просто вызывать reloadData в табличном представлении при изменении базовых данных.

Он также включает в себя UIScrollView, поэтому вам не нужно выполнять тяжелую работу.

person Jason Fuerstenberg    schedule 04.09.2012