2017-10-24 24 views
0

뷰 객체를 업데이트 할 수 있도록 콜렉션 뷰 내에서 cellForItem 내부에 다음 셀을 가져와야합니다. 아래의 내용을 시도해도 작동하지 않습니다. 또한 indexPathForVisibleItemsindexPath.row + 1으로 전달하려고 시도했으며 범위를 벗어난 색인 오류가 발생합니다.Swift에서 UIcollectionView의 다음 셀 가져 오기

let index = IndexPath(row: indexPath.row + 1, section: indexPath.section) 
      if let nextCell = collectionView.cellForItem(at: index) as! MKRCell { 
       nextCell.setupWaitView(time: timeToWait) 
       nextCell.waitViewHeightConstraint.constant = 80 
       nextCell.waitView.alpha = 1 
       nextCell.waitView.isHidden = false 
      } 

다른 방법으로이 작업을 수행 할 수 있습니까?

감사

+0

데이터를 변경하고 해당 데이터를 사용하여 셀을 만드는 것이 훨씬 좋습니다. –

+0

cellForItem이 호출되면 다음 셀을 사용할 수 없습니다. 왜 그렇게하고 싶습니까? 자세한 내용을 설명해 주시겠습니까? –

+0

현재 셀에 특정 값 (timeToWait)이있는 경우 다음 셀에서 메소드를 호출하려고 시도합니다. – user7684436

답변

1

아니,cellForItemAt에 초기화하기 전에 셀 개체를 얻을 수 없습니다 그러나 여기 당신이 UICollectionViewDelegate

func collectionView(_ collectionView: UICollectionView,willDisplay cell: UICollectionViewCell,forItemAt indexPath: IndexPath) { 
    if let myCell = cell as? MKRCell { 

    } 
} 

에서 셀을 표시하기 전에 전화를받을 수 있습니다

셀을 설정하려면에서보기를 설정해야합니다.

func collectionView(_ collectionView: UICollectionView, 
    cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

것은이 방법에서 반환됩니다 만 셀을 수정하는 것을 잊지 마십시오 :

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

} 
+0

시도하고 싶습니다. 다음으로 캐스팅하는 데 문제가 있습니다. MKRCell! – user7684436

+0

이것은 이미 nextCell로 계산을 수행하지 않습니다. call class에 캐스팅 만 입력하십시오. –

+0

nextcell에 MKRCell로 액세스해야만 그 안에서 메서드를 호출 할 수 있습니다. – user7684436

1

당신의 셀을 업데이트해야합니다. 다른 셀은 그 순간에 존재하지 않을 수도 있습니다.

또는 셀 참조를 약하게 유지하고 필요할 때 업데이트 할 수 있습니다.

+0

위의 cellForItem을 시도했지만 작동하지 않았습니다. 특정 인덱스 + 1에서 항목을 다시로드하는 것을 포함하여 작동하지 않았습니다. – user7684436