2017-02-06 4 views
0

dequeueReusableCell과 반대되는 방법이 있습니까? 셀 높이 계산을 위해 셀을 dequeuing하고 높이를 계산 한 후 해당 셀을 재활용하여 디스플레이에 다시 사용할 수있게하려고합니다.수동 재활용 UITableViewCell

또는 셀 유형마다 개체를 인스턴스화하고 속성에 저장 한 다음 대신 사용해야합니까?

+0

다른 방법으로는 셀을 큐에서 제거 할 수 없습니다. –

+0

오른쪽으로 가려면 : UITableView에서 셀을 dequeue하여 설정하고 높이를 계산 한 다음 버립니다. 아니면'cellForRow' (내부적으로 'dequeue ...'라고 부름)를 호출하고, 높이를 계산 한 다음 그 값을 던져 주나요? 그리고 그것을 버리는 것이 아니라 테이블을 다시 사용하기를 원합니다. (다음에'dequeueReusableCell'을 호출하면 다음 중 하나가 반환됩니다.) –

+0

@AndreasOetjen'dequeueReusableCell (withIdentifier : "xyz")'를 호출하고 나서 – shelll

답변

0

iOS 10에서는 여전히 가능하지 않습니다. 향후 지원이 가능할 경우 답변을 업데이트 할 예정입니다.

0

직접 스택/대기열을 만든 다음 수동으로 대기열에서 빼낸 모든 셀 (예 : cellForRow.. 외부)을이 대기열에 넣을 수 있습니다.

내부에서 cellForRow... 메서드를 사용하면 먼저 테이블 뷰 dequeue-method를 사용하고 nil을 반환하면 재사용 가능한 셀을 검색하는 데 자체 큐를 사용하게됩니다. 아무도 반환하지 않는 경우에만 새 셀을 만듭니다.

그러나 테이블 뷰의 dequeue-method는 이전에 이미 생성 한 셀만 cellForRow에 반환합니다!

+0

MagOS 결코 iOS 10 경우 제 경우에는 nil 반환하지, 어쩌면 무언가가 수년에 걸쳐 변했을 것입니다. cellId -> cell이라는 사전으로 끝나고 생성자의 모든 ID에 대해 하나의 셀을 인스턴스화합니다. 셀 재활용에 자신의 흐름을 추가하면 지옥의 경로가됩니다 ... – shelll

+0

어떤' dequeue'- 당신이 부르는 방법, 그것은 cre가 될 것입니다. 너를 위해 하나를 먹었다. 그럼에도 불구하고 일반적으로 높이 계산을 위해 셀을 만드는 방식으로 앱을 구현하지 않을 것입니다. 이는 큰 테이블에 대해서는 그리 성능이 좋지 않기 때문입니다. –

+0

'indexPath '가없는'dequeue' 메소드는 셀을 생성해서는 안되며, 구형 iOS 버전에서는 생성하지 않습니다. 이제 두 dequeue 메소드는 iOS 10에서 제 경우에 non-nil 값을 반환합니다. 동적 높이 셀은 일반적으로 iOS에서 큰 고통입니다. 자동 높이 계산이 엉망이고 느리다. 예상 높이는 더 큰 똥이다 (정확한 스크롤 값이 필요하고 어떤 경우에는 점프를 유발할 때 신뢰할 수 없다). 유일한 확실한 방법은 실제 셀로 높이를 계산 한 다음 값을 캐시하는 것입니다. 그리고 한 번에 동적 높이를 가진 10-20 개 이상의 셀을 삽입 할 수 없습니다. – shelll