2010-08-15 6 views
1

iOS 응용 프로그램을 개발 중이며 문제에 접근하는 방법을 결정하는 데 문제가 있습니다.iOS - 이중 목록 레이아웃

동일한 데이터의 다른 뷰를 표시하기 위해 두 개의 UITableViewController를 사용하고 있습니다. 하나는 마스터 목록이고 다른 하나는 "즐겨 찾기"로 표시된 항목 만 포함합니다. 또한 항목 높이가 가변적이어서 "heightForRowAtIndexPath"를 사용하여 각 항목의 높이를 나타냅니다. 문제는 속도가 빠르므로 한보기에서 다른보기로 전환 할 때 다른보기 (즐겨 찾기/불특정)로 변경 한 내용을 표시하려면 업데이트해야합니다.

솔루션 # 1은 :

데이터를 테이블 뷰가 표시 될 때마다 새로 고침. 데이터가 느린 로딩을 사용하여 표시되지만 모든 데이터가로드되기 전에 모든 항목에 대해 "heightForRowAtIndexPath"가 호출되고 속도가 느리기 때문에 이는 제대로 작동하지 않습니다. 내 iPhone 4에서 높이 값이 캐시 된 경우 (병목 현상이 높이를 적용하고 검색하는 것이 아니더라도) 약 300 개의 항목 목록이로드되는 데 약 4 초가 걸립니다.

 

솔루션 # 2 : 변경되면

테이블을 수동으로 조작 할 수 있습니다. 나는 이것을 시도하지 않았지만 아마도 버그 일 것입니다. 당신의 생각?

 

솔루션 # 3 :

현재로드 할 수있는 항목에 대한 업데이트의 다른 테이블을 알리기 위해 알림 유형의 시스템을 사용. 나는 정상을 넘어서서 전혀 작동하지 않을 수도 있기 때문에 이것을 시도하지 않았습니다.

누구나 동일한 데이터의 두보기를 표시하는 쉬운 방법을 알고 있습니까?

답변

1

reloadRowsAtIndexPaths : withRowAnimation을 사용하여 n 개의 행을 다시로드 할 수 있습니다. 나는 한 번도 해 본 적이 없지만 더 빠르기 때문에 그곳에 있다고 생각합니다. 그래서 시도해보십시오.

heightForRow : thingy에서 애플 문서에서 그 기능이 실제로 성능을위한 킬러라는 것을 기억할 수 있습니다. 아마도 행의 최대 높이를 가져 와서 UITableView.rowHeight에서 설정할 수 있습니까?

+0

실제로. - (void) reloadRowsAtIndexPaths : (NSArray *) indexPaths withRowAnimation : (UITableViewRowAnimation) 애니메이션 –

+0

예, heightForRowAtIndexPath는 매우 느리지 만 앱이 동일한 크기의 행으로 올바르게 보일 것이라고 생각하지 않습니다. 속도 향상을 위해 고려해야 할 유일한 대안은 테이블 뷰를 직렬화하고 NIB가로드 될 때 역 직렬화하는 것입니다. 가능한지는 확실하지 않지만 아이디어는 확실하지 않습니다. – Nippysaurus

+0

@Nippysaurus : 늦은 코멘트에 대해 사과드립니다. 나는 이것을 가속 화하는 다른 방법을 모른다. tableview를 serialize하는 것은 무엇을 의미합니까? – Nick

관련 문제