Как обновить содержимое UIView, заполненного фотографиями - PullRequest
1 голос
/ 22 ноября 2011

У меня есть модальное представление, которое вызывается из табличного представления.Всякий раз, когда я вызываю модальное представление, я устанавливаю маленькое представление внутри модального представления с некоторыми прокручиваемыми изображениями внутри.Проблема в том, что когда я возвращаюсь к представлению таблицы и выбираю другую строку таблицы, старые изображения должны исчезнуть, а вместо этого появляются новые, но этого не происходит.Похоже, когда я впервые загружаю модальное представление, оно заполняется начальными 2 картинками, а когда я загружаю его снова, оно продолжает добавлять новые картинки со старыми ..

Вот код:

- (void)layoutScrollImages {
UIImageView *view = nil;
NSArray *subviews = [scrollView1 subviews];
//NSMutableArray *subviews = [scrollView1 subviews];

// reposition all image subviews in a horizontal serial fashion
CGFloat curXLoc = 0;
for (view in subviews)
{
    if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
    {
        CGRect frame = view.frame;
        frame.origin = CGPointMake(curXLoc, 0);
        view.frame = frame;

        curXLoc += (kScrollObjWidth);
    }
}

// set the content size so it can be scrollable
[scrollView1 setContentSize:CGSizeMake(([self.nomeFotos count] * kScrollObjWidth), [scrollView1 bounds].size.height)];
}

и:

- (void)setScrollingImages {
//self.view.backgroundColor = [UIColor viewFlipsideBackgroundCol];

// 1. setup the scrollview for multiple images and add it to the view controller
//
// note: the following can be done in Interface Builder, but we show this in code for clarity
[scrollView1 setBackgroundColor:[UIColor blackColor]];
[scrollView1 setCanCancelContentTouches:NO];
scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite;
scrollView1.clipsToBounds = YES;        // default is NO, we want to restrict drawing within our scrollview
scrollView1.scrollEnabled = YES;

// pagingEnabled property default is NO, if set the scroller will stop or snap at each photo
// if you want free-flowing scroll, don't set this property.
scrollView1.pagingEnabled = YES;

// load all the images from our bundle and add them to the scroll view
NSUInteger i;
for (i = 1; i <= [self.nomeFotos count]; i++)
{
    NSString *imageName = [NSString stringWithFormat:[self.nomeFotos objectAtIndex:(i-1)]];
    UIImage *image = [UIImage imageNamed:imageName];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    NSLog(@"%@", imageName);
    // setup each frame to a default height and width, it will be properly placed when we call "updateScrollList"
    CGRect rect = imageView.frame;
    rect.size.height = kScrollObjHeight;
    rect.size.width = kScrollObjWidth;
    imageView.frame = rect;
    imageView.tag = i;  // tag our images for later use when we place them in serial fashion
    [scrollView1 addSubview:imageView];
}

[self layoutScrollImages];  // now place the photos in serial layout within the scrollview
}

1 Ответ

0 голосов
/ 22 ноября 2011

Я только что понял, что я хотел, решение состоит в том, чтобы удалить все текущие подпредставления и затем добавить новые представления. Код выглядит следующим образом:

for (UIView* subView in [self.view.subviews]) {
    [subView removeFromSuperview]; 
}

Я поместил этот код в свое представление, и каждый раз, когда оно появляется, оно очищает свои подпредставления, и я вызываю метод для добавления новых подпредставлений (изображений).

Спасибо

...