У меня есть UICollectionView, который используется для имитации нового календаря в iOS 7. Этот вид коллекции находится внутри контроллера, который имеет свойство selectedDate. Всякий раз, когда свойство selectedDate установлено, представление коллекции должно прокручиваться до даты в представлении коллекции.contentOffset не обновлено в UICollectionView, если scrollToItemAtIndexPath вызывается внутри viewWillAppear
Вид контроллера календаря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 не в окне, вы не можете прокручивать. Планирование прокрутки для следующего цикла цикла гарантирует, что представление добавлено в окно и может быть правильно прокручено.
Неужели кто-то еще испытал эту проблему и как ее обходные пути?
У меня такая же проблема (по иронии судьбы, после создания аналогичного управления календарем). Мое решение до сих пор заключалось в том, чтобы оживить прокрутку во время 'viewDidAppear:' – enjayem