私はタブ付きバービューコントローラを持っています。メインビューコントローラには、コレクションビューがあります。あなたは一つnewAchievementIndexPaths
1のインデックスパスを介しもし意志サイクルを見ることができるようにタブを切り替えた後、タブ付きビューコントローラ、コレクションビューのscrollToItemが機能しない
// Called in viewDidAppear
func animateNewAchievements() {
if let indexPath = newAchievementIndexPaths.first {
collectionView.scrollToItem(at: indexPath, at: .bottom, animated: true)
}
}
// Delegate method
func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
if let indexPath = newAchievementIndexPaths.first {
if let cell = collectionView.cellForItem(at: indexPath) as? TrophyCollectionViewCell {
cell.animate(completion: {
if self.newAchievementIndexPaths.count > 0 {
self.newAchievementIndexPaths.removeFirst()
}
self.perform(#selector(self.animateNewAchievements), with: nil, afterDelay: 0.4)
})
}
}
}
:私はそうのような配列に含まれているセルのリストをアニメーション化します。これはすべて正常に動作しますが、プロセスを中断してタブを切り替えてビューコントローラに戻ると、アニメーションは継続しません。それはcollectionView.scrollToItem(at: indexPath, at: .bottom, animated: true)
を呼び出しますが、アニメーション化されず、デリゲートは呼び出されません。しかし、私が指でテーブルを少しだけスクロールして放置して画面に戻ると、問題なくアニメーションが再開されます。
ここで何が起こっているのですか?
あなたは既にそのインデックスパスのセルにいるため、これは起こっています。 –