2017-04-18 3 views
0

안녕하세요. iOS 개발에 처음입니다. 한 번에 하나의 셀을 표시하고 가로로 (예 : 갤러리처럼) 스크롤하는 collectionview을 사용하고 있습니다. 셀이 스크롤되고 셀 0과 셀 1이 화면 절반에 표시 될 때 내 화면에있는 레이블을 변경하는 것입니다. 현재 스크롤링이 중지되면 레이블의 텍스트가 변경됩니다. 나는 func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)장치 화면에서 컬렉션 뷰 셀의 위치를 ​​알아내는 방법

편집 1을 사용하고 있습니다 :

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 
    let visibleRect = CGRect(origin: imageCollectionView.contentOffset, size: (imageCollectionView.bounds.size)) 
    let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY) 
    let indexPath : IndexPath = imageCollectionView.indexPathForItem(at: visiblePoint)! 
    lblUserName.text = arrayImageData[indexPath.row]["userName"] as! String? 
    lblTime.text = arrayImageData[indexPath.row]["time"] as! String? 
    imgProfilePic.kf.setImage(with: arrayImageData[indexPath.row]["profilePic"] as! Resource?) 
} 
+0

정말 가깝습니다! 여러분의 필요에 적절하게 부합되는 다른 방법이 델리게이트에 있습니다 -'scrollViewDidScroll' - https://developer.apple.com/reference/uikit/uiscrollviewdelegate/1619392-scrollviewdidscroll – Losiowaty

+0

@Loisiowaty 편집 된 질문 부분을 확인하십시오. 나는'scrollViewDidScroll'에서 같은 코드를 사용합니다.'let indexpath' 라인에서 BAD_EXCESS 크래시가 발생합니다. – explorer

+0

그 이유는'indexPathForItem'의 반환 값을 언랩 ('!')해야만 할 가능성이 높습니다. 가치는'nil' 일 수 있습니다 - 당신은 그것을 설명 할 필요가 있습니다. – Losiowaty

답변

0

당신은 대신 scrollViewDidScroll를 구현해야합니다.

관련 문제