2017-02-21 1 views
-1

나는 그들을 가로 지르고 버튼의 텍스트를 검사하여 일부 셀을 선택하려고합니다. 내 콜렉션 뷰의 수를 확인해 보았고 예외를 강제로 셀에 넣기 전에 5를 보여줍니다. 나는 예외를 얻을하지 않습니다 viewDidAppear에서 그것을 호출 할 때 .. 난 viewWillAppear에서이 정확한 코드를 호출 할 때collectionview가 viewDidLoad 예외에서 cellForItem을 호출하려고 시도했습니다.

for index in 0..<array.count { 
     let indexPath = IndexPath(item: index, section: 0) 

     let cell = ingestionCollectionView.cellForItem(at: indexPath) as! cvcBase 

     //Set property of the cell    
} 

내가 같은 예외가 있지만, 나는 지연이있을 수 있습니다 여기에

내 코드입니다 내가하는 행동에서

이 코드에서 코드가 충돌합니다 (let cell = ingestionCollectionView.cellForItem(at: indexPath) as! cvcBase). 강제 종료하지 않으면 UICollectionViewCell은 0입니다.

오류 메시지 :

fatal error: unexpectedly found nil while unwrapping an Optional value 
2017-02-20 19:43:30.093023 Project[1073:218460] fatal error: unexpectedly found nil while unwrapping an Optional value 

답변

1

컬렉션보기가 아직 액세스하므로, 어떠한 시도를로드하지 않기 때문에 당신은 문제가있는 콜렉션 뷰의 셀이 실패합니다.

이것은 완전히 잘못된 접근 방식입니다.

해야 할 일은 원하는 데이터 시작 상태를 나타내는 데 필요한대로 데이터 모델을 설정하는 것입니다.

데이터 소스 메서드 collectionView:cellForItemAtIndexPath:을 구현하면 데이터 모델을 기반으로 셀을 적절하게 설정해야합니다.

+0

사용자가 셀을보기 전에 셀의 속성을 수정하려고합니다. 다른 방법으로이 작업을 수행 할 수 있습니까? 예외가 5 개 항목을 반환하기 전에 내 컬렉션 섹션의 항목 수를 세어 보면 .... 아직로드되지 않았다는 것을 의미합니까? 섹션 0에 5 개의 항목이있는 경우 감사합니다. – Walker

+0

상태를 수행하면 셀이 올바른 상태로 표시되므로 사용자가 셀을보기 전에 발생합니다. 데이터 모델에 대한 의미와 정보에 대한보다 구체적인 세부 정보로 질문을 업데이트하면보다 구체적인 세부 정보로 내 대답을 업데이트 할 수 있습니다. – rmaddy

+0

당신이 의미하는 바를 봅니다 ... 와우 왜 인덱스 경로의 항목에서 셀에서 처리하지 않았는지 모르겠군요. 구현을 수정하려고합니다. – Walker

0

왜 셀이 사용할 수있는 경우에만 풀기 없습니다 :

for index in 0..<array.count { 
     let indexPath = IndexPath(item: index, section: 0) 

     if let cell = ingestionCollectionView.cellForItem(at: indexPath) as? cvcBase{ 
     //Set property of the cell    
     } 
} 
+1

물론 셀은 사용할 수 없으므로 코드가 실행되지 않습니다 ... 질문은 왜 viewDidLoad에서 사용할 수 없으며 어떤 방법이든 – Walker

+0

입니다. 예를 들어, 배열에 10 개의 항목이 있지만 셀에 큰 높이가 있기 때문에 tableview는 3 개만 표시 할 수 있습니다. 따라서 3 개의 셀만 액세스 할 수 있습니다. 즉, indexpath = 0,1,2 인 경우 앱이 충돌하는 이유는 보이지 않는 indexpath의 셀에 액세스하려고하는 것입니다. Tableview가 필요한 tableviewcells 만 할당한다는 것을 나타냅니다. – omarzl