
요.. 사진에서의 문제였죠
이건 찾아보니,, layoutFNeeded() 타이밍이나 cellForItem(at:) 의 실패 때문에 일어난다고 하더라고요…?
DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) {
self.selectItem(at: 0)
}
selectItem(at:)을 호출할 때 collectionView의 셀들이 아직 렌더링이 안 돼서
guard let cell = tabCollectionView.cellForItem(at: IndexPath(item: selectedIndex, section: 0)) else { return }
이 코드가 결국 nil을 리턴한대요 그래가지고 위치 업데이트가 안 되는 그런 순서라고 하네요
해결법은!!
layoutSubviews() 또는 didMoveToWindow() 에서 selectItem(at:)을 호출해주면 됩니다
UIView가 실제로 화면에 딱 잘 붙고 collectionView가 셀을 렌더링 한 후에!! 호출되어야 indicator가 잘 나타난다고 합니다
override func layoutSubviews() {
super.layoutSubviews()
selectItem(at: 0)
}
요렇게 layoutSubviews() 에서 selectItem(at: 0) 을 해주니 뷰 이동을 했을 때도 처음부터 잘 뜨게 됩니다

하지만… 또 그러나