Я нашел, что прокрутка в viewWillAppear может не работать надежно, потому что представление коллекции еще не закончило его компоновку; вы можете прокрутить не тот элемент.
Я также обнаружил, что прокрутка в viewDidAppear приведет к тому, что мгновенная вспышка не просматриваемого вида будет видимой.
И, если вы прокручиваете каждый раз через viewDidLayoutSubviews, пользователь не сможет прокручивать вручную, потому что некоторые макеты коллекции вызывают макет под просмотр при каждом прокрутке.
Вот что я нашел работает надежно:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
// If we haven't done the initial scroll, do it once.
if (!self.initialScrollDone) {
self.initialScrollDone = YES;
[self.collectionView scrollToItemAtIndexPath:self.myInitialIndexPath
atScrollPosition:UICollectionViewScrollPositionRight animated:NO];
}
}
Это именно то, что я пытаюсь использовать. У меня есть номер объекта в массиве, и я знаю имя этого объекта. Но не знаете, как правильно поставить indexPath ... Любые идеи? – AlexanderZ
Вы можете легко создать 'indexPath':' [NSIndexPath indexPathForItem: numberOfTheObject inSection: sectionNumber] ' –
Были ошибки. Но тогда я поместил весь упомянутый код внутри (void) viewDidLayoutSubviews {}, и теперь он работает нормально. Тханкс Богдан. – AlexanderZ