2013-08-20 2 views
0

저는 다운로드 시스템을 구현하고 있습니다.이 테이블 뷰에는 코어 데이터의 요소가 있습니다.UITableViewCell 다이나믹스를 유지하십시오.

사용자가 셀의 다운로드 버튼을 눌러 시스템이 관련 파일의 다운로드를 시작하기를 바랍니다.

위임 메서드를 통해 통신하고 진행 상황을보고 할 수있는 다운로드 라이브러리가 있습니다. 내 문제는 재사용 가능한 셀에서 진행 뷰를 관련성있게/올바르게 표시/업데이트하는 방법을 모르겠다는 것입니다.

다운로드 라이브러리는 NSURL과 함께 작동하며 NSURL을 하위 클래스로 만들고 핵심 데이터 인스턴스를 나타내는 속성 프로토콜을 추가 할 수 있습니다. 그렇지만 UI로 셀을 셀별로 업데이트하는 가장 좋은 방법은 무엇입니까?

대리인이 이벤트를 수신 할 때마다 [self.tableView reloadData]으로 전화해야합니까?

답변

1

정확합니다. 까다로운 문제입니다. 알다시피, 테이블이 스크롤 될 때 셀 오브젝트가 재사용되고 동일한 셀 오브젝트가 테이블의 동일한 인덱스 경로를 계속 참조한다는 보장은 없습니다.

tableView:willDisplayCell:forRowAtIndexPath:에서 살펴볼 것을 제안합니다. 셀이 표시되기 직전에 테이블 뷰 대리인에서 호출됩니다. 이 셀을 다운로드 라이브러리의 올바른 대리자로 설정하는 것이 좋습니다.

두 번째 질문에 대해서는 아니요, 각 이벤트마다 [self.tableView reloadData]으로 전화하지 마십시오. 그것은 성과를 떨어 뜨리는 결정이 될 것입니다. :)

+0

조언이 좋습니다. 나는 'tableView : willDisplayCell : forRowAtIndexPath :'에 대해 생각하고 있지만 다운로드 라이브러리를 셀에 위임하면 라이브러리에 하나 이상의 델리게이트를 가질 수 없으므로 모든 다운로드 이벤트를 수신하게됩니다. 따라서 테이블 컨트롤러를 다운로드 라이브러리의 위임자로 설정하고, 메소드를 구현하고, 위임 메소드 (예 : 진행)를 기반으로 UI 태스크를 수행하는 것이 아이디어였습니다. –

+0

내 문제는 이제 대리자 메서드에서 정확한 셀을 따라 잡는 것입니다. 셀을 조회하는 데 사용할 속성이 첨부 된 개체를 보면 대리자 메서드 (셀에 대해서는 알지 못하고 대부분 NSURL 만 알 수 있습니다) 핵심 데이터 수집. 핵심 데이터 레코드에서 셀 (?)을 찾은 후 표시되는지 확인합니다 (작동하지 않음). –

+0

다른 사람들이 어떻게하는지 잘 모르겠습니다. 음악 앱에서 다운로드 아이콘을 볼 수 있습니다. 셀 당 파일을 다운로드 할 때 진행 뷰를 다운로드하기 시작할 때 (버튼 또는 액세서리보기인지 여전히 이해해야 함) 자체를 업데이트하고 화면에서 벗어난 동일한 지점에서 다시 그릴 수 있습니다. –