2010-01-22 2 views
2
나는 내가 높이 계산을위한 손님 셀 이온이 데이터를 사용하려면 이후 tableView:heightForRowAtIndexPath: 에서 테이블에 내 휴대폰에 액세스해야

. 내 세포를 얻기 위해 찾은 유일한 방법은 그의 문제 tableView:cellForRowAtIndexPath:이있는 tableView의 셀에 대한 액세스를 필요 : heightForRowAtIndexPath를 :

를 호출하는 것입니다 tableView:cellForRowAtIndexPath:를 호출하면 실제로 세포를 생성하고 있다는 것입니다 그들과 함께 아무것도하지 않는 것보다. 동일한 셀을 그리기 목적으로 사용해야 할 때 다시 만들게됩니다. 따라서 동일한 인덱스의 경우 셀이 두 번 생성됩니다.

그래서 더 효과적인 방법이 있는지 궁금합니다. 도움 주셔서 감사합니다.

답변

6

아직 존재하지 않으므로이 방법으로 셀에 액세스 할 수 없습니다. tableView:cellForRowAtIndexPath:에 셀을 만들기 전에 tableView:heightForRowAtIndexPath:이 호출됩니다.

그러나 셀 개체에 모델 정보를 저장해서는 안되기 때문에 중요하지 않습니다. 셀은 뷰일 뿐이므로 모델에 셀을 생성하는 데 필요한 모든 데이터를 항상 보유해야합니다.

+0

그건 고상한 생각이지만 layoutSubviews를 사용하여 셀을 적절한 형식으로 레이아웃해야하는 경우에는 작동하지 않습니다. 이 경우 생성 된 셀 내용에 따라 셀의 높이를 동적으로 조정할 수 있습니다. 이것은 셀의 너비를 알고 있다면 여전히 해결 될 수 있습니다.하지만 변수가 너무 길면 어떻게 될까요? 나는이 문제를 겪고 있으며 아직 해결책을 찾지 못했다. 누군가? – JoBu1324

+4

주위를 둘러 볼 방법이 없습니다. UITableView를 사용하면 셀을 만들기 전에 셀 높이를 알아야합니다. –

+0

나는 그것이 사실이라고 생각하지 않는다. tableView : heightFOrRowAtIndexPath : layoutSubviews 뒤에 * 및 *를 호출하기 전에 나타납니다. 내가 셀의 높이를 얻으려고 할 때 처음으로 충돌하는 문제가있다. tableView : cellForRowAtIndexPath : 크래시가 발생합니다. try/catch 블록에 메시지를 넣으려고했으나 아무런 효과가 없습니다. – JoBu1324

0

일반적으로 데이터와 인덱스 경로에 따라 tableView:cellForRowAtIndexPath:에서 반환 할 셀을 선택합니다.
따라서 동일한 데이터 및 색인 경로를 사용하여 tableView:heightForRowAtIndexPath:에 반환 할 셀 높이를 결정할 수 있습니다.

관련 문제