2013-10-24 6 views
0

언제든지 섹션과 행을 추가하거나 제거 할 수있는 TableViewController가 있습니다. 각 섹션 헤더는 버튼이 추가 된 UITableViewHeaderFooterView입니다.동적 테이블 뷰의 섹션 헤더에있는 컨트롤의 동작에서 섹션의 인덱스를 결정합니다.

버튼을 터치 할 때 터치 된 버튼으로 섹션 색인을 어떻게 결정합니까?

전제 조건

의 tableview를 운전하는 모델 객체가 있습니다. 모델에는 섹션 수를 나타내는 배열을 반환하는 속성이 있습니다. 배열의 각 객체는 행을 나타냅니다.

요구 사항

구현은 상태 모델 정보의 중복에 의존하지 않아야합니다.

테이블 뷰 애니메이션을 사용하면 행과 섹션이 삽입되고 제거됩니다. 테이블 뷰 reloadData는 업데이트를 위해 이상적으로 호출되지 않습니다.

+0

버튼/뷰가 생성되면 버튼의 태그를 섹션의 태그로 설정하십시오. 그런 다음 태그를 읽으십시오. – Tim

+0

섹션이 표시되면 섹션이 애니메이션으로 표시되는 경우 안정적으로 작동합니까? 섹션 A와 B에 태그 0과 1이 있다고 가정 해 봅시다. 섹션 C가 A에서 애니메이션을 적용하여 섹션 C, A, B를 생성하면 A와 B의 태그를 언제 업데이트합니까? viewForHeaderInSection이 모든 섹션에 대해 호출 될 수 있습니까? – Voxar

+0

다른 옵션은 데이터 소스의 섹션 뷰를 유지하고 배열의 객체 인덱스를 사용하여 섹션 인덱스를 결정합니다. – Tim

답변

2

NSMutableArrayUIViews (섹션 바닥 글)을 정의하십시오. 이 섹션 머리글/바닥 글에 대한 데이터 소스 역할을합니다 :

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *buttonView = [self.sectionArray objectAtIndex:section]; 
    return buttonView; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return [self.sectionArray count]; 
} 

- (void)didPressSectionButton:(id)sender 
{ 
    int section = [self.sectionArray indexOfObject:sender]; 
} 

이, 당신은 행과 섹션에 대한 전체 jQuery과에 전력을 공급하기 위해있는 NSDictionary를 사용할 수 있습니다 단지 기본적인 예입니다. KV 쌍 사용.

+0

고맙습니다. 필자는 테이블 뷰를 구동하는 기존 모델을 사용하여 어레이의 상태를 최신으로 유지하는 논리를 추가하고 싶지 않습니다. 구현에 대한 추가 정보로 내 질문을 업데이트 할 것입니다. – Voxar

+0

어떤 섹션 헤더를 눌렀는지 동적으로 알기를 원한다면, 특히 태그가 적합하지 않은 경우 tableview를 구동하는 데이터 소스를 수정하는 것 외에 다른 옵션을 거의 볼 수 없습니다. 사전 배열을 사용할 수 없습니까? 각 사전은 섹션을 나타내며 섹션에는 각 셀 (예 : rowArray) 및 머리글/바닥 글보기에 대한 모든 정보가 포함 됩니 – Tim

+0

나는 최대 코드 유지 보수를 목표로하고있다. 추가 된 복잡성은 비쌉니다. – Voxar

관련 문제