Я подклассифицировал CollectionView и использовал его для отображения коллекции изображений в разных категориях. Например: Самые популярные, Наиболее просматриваемые. Я обращаюсь к каждой категории/странице через TabbarController.Перезагрузка UICollectionView вызывает мерцание
классов у меня есть следующие:
Главного класса - MediaList - Базового класса для извлечения и отображения средств массовой информации в целях сбора в зависимости от типа носителя запрашиваются.
Подклассы - MostPopular и MostViewed являются очень легкими классами, которые наследуются от основного класса.
Проблема в том, что когда я перехожу из MostPopular в MostViewed, представление коллекции сначала отображает последнюю категорию изображений, а затем обновляется до новой ... В результате вы видите эффект щелчка.
Пример кода из MediaList
- (void)viewDidLoad
{
[super viewDidLoad];
self.mediaCollection.dataSource = self;
self.mediaCollection.delegate = self;
[self getMedia];
}
(void) getMedia
{
NSLog(@"///////////////////////// GETTING MEDIA /////////////////////////");
XMLGenerator * sharedXmlGen = [XMLGenerator sharedXmlGenerator];
GlobalVars * sharedGlobalVars = [GlobalVars sharedGlobalVars];
sharedXmlGen.assetFlag = _contentFilter;
NSLog(@"The filter is: %@", _contentFilter);
[sharedXmlGen getPhotoVideoWithCallBackFunction:^{
[_mediaCollection performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
}];
}
Пример кода из подклассу (MostPopular):
- (void)viewDidLoad
{
[super setContentFilter:FILTER_POPULAR]; //Set the filter for the type of content
[super viewDidLoad];
// Do any additional setup after loading the view.
}
Два уточнения:
Я должен добавить, что я пытаюсь повторно использовать как можно больше кода, не создавая новых представлений на раскадровке или контроллерах.
Поскольку носители возвращаются очень динамично и могут регулярно обновляться, мне пришлось перезагрузить мои данные (используя getMedia) на viewDidAppear. Теперь это означает, что каждый выбор конкретной страницы приведет к мерцанию, когда новый вид загружается ...
Обновление - После дальнейшего расследования он выглядит, как это не имеет ничего общего с наследованием uicollectionview , Проблема в том, что это просто перезагрузка данных в uicollectionview. Конечно, я просто нажал на один из двух подклассовых представлений. Я также добавил метод reload к методу viewdidAppear, чтобы увидеть проблему еще хуже. Также намного легче понять, что проблема заключается в том, что последний набор изображений в представлении коллекции сначала отображает последнюю категорию изображений до того, как обновится новый. Затем, когда коллекция обновляется, я получаю мерцание.
* Обновления Oct 4 * Считая, что мое лучшее решение - отображать индикатор ожидания и блокировать страницу во время загрузки. Я попробовал установить uicollectionview на nil и считаю, что это решит проблему, но не уверен, что ее будет легко сбросить.
Имеет ли каждый контроллер вида свой собственный просмотр коллекции? Или вы пытаетесь поделиться одним и тем же для каждой вкладки? –
Я пытаюсь использовать один и тот же вид коллекции. У меня есть несколько страниц/разделов, подобных этому, поэтому я пытаюсь использовать все возможное. – mday
@WilliamFalcon - Да. Я пытаюсь поделиться одним и тем же представлением коллекции. У меня есть несколько страниц/разделов, подобных этому, поэтому я пытаюсь использовать все возможное. Я обновил свой первоначальный пост двумя разъяснениями ... – mday