У меня есть UICollectionView, который используется для имитации нового календаря в iOS 7. Это представление коллекции находится внутри контроллера, у которого есть свойство selectedDate. Всякий раз, когда свойство selectedDate установлено, представление коллекции должно прокручиваться до даты в представлении коллекции.
Контроллер календаряWillAppear также гарантирует, что выбранная дата будет видна, потому что этот контроллер кэшируется и повторно используется.
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.calendarView scrollToDate:[self selectedDate] animated:NO];
}
Проблема в том, что ОЧЕНЬ первый раз, когда отображается контроллер календаря, прокрутка не работает. ContentOffset представления коллекции не обновляется.
Мое текущее обходное решение - запланировать прокрутку для следующего цикла цикла, используя
dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^(void)
{
// Scroll to the date.
});
Похоже, когда UICollectionView не находится в окне, которое вы не можете прокручивать. Планирование прокрутки для следующего цикла цикла гарантирует, что представление было добавлено в окно и может быть правильно прокручено.
Испытывал ли кто-нибудь еще этот вопрос и каковы его обходные пути?