2013-07-09 3 views
0

각 섹션에 'N'개의 행이없는 'N'개의 섹션이 포함 된 UITableView이 있습니다.모든 섹션의 특정 행에있는 UITableView 체크 표시

내 요구 사항은 다음과 같습니다

테이블 뷰 페이지는 각 섹션의 1 행을로드

이 체크 표시해야합니다. 그런 다음 사용자는 각 섹션에서 자신이 선택한 것을 선택하고 해당 섹션의 해당 행에 체크 표시가되어 있습니다.

이 기능을 어떻게 구현합니까?

+0

당신이 그 일을 시도하는 방법? 이제 테이블보기를 채우기 위해 어떤 데이터가 사용됩니까? – Wain

+0

내 tableview에 다른 필터 옵션이 포함되며 각 섹션에는 필터 기준이 다릅니다. – user2552714

+0

아무도 나를 도울 수 있습니까 – user2552714

답변

1

테이블의 특정 행에 표시되는 정보는 테이블의 데이터 소스에 의해 결정됩니다. 데이터에 사용하는 데이터 구조에 특정 행에 체크 표시가 있음을 나타내는 방법이 있는지 확인하십시오. 그런 다음 해당 셀에 대해 확인 표시가 표시되어야 하는지를 결정하고 그에 따라 셀을 조정하도록 -tableView:cellForRowAtIndexPath:을 구현하십시오.

예를 들어, 데이터가 섹션의 배열로 표시되고 각 섹션이 사전의 배열이라고 가정 해 봅니다. 각 행에는 고유 한 사전이 있습니다. 행에 체크 표시가있을 경우 사전에 checked 항목이 YES으로 설정됩니다. 그렇지 않으면 해당 항목은 NO입니다. 확인 표시를 이미지로 표시 할 수 있습니다. 그런 다음 당신은 :

각 섹션의 첫 번째 행의 체크 표시를 두는
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MyTableViewCell *cell = ... // code to get the cell 

    if (myData[indexPath.section][indexPath.row][@"checked"].boolValue == YES) { 
     cell.checkedImageView.image = self.checkmarkImage; 
    } 
    else { 
     cell.checkedImageView.image = nil; 
    } 

    return cell; 
} 

은 각 섹션의 배열의 첫 번째 항목이 선택되어 있고 다른 사람이되지 않도록 데이터를 초기화의 문제이다.

-tableView:didSelectRowAtIndexPath:을 실행하여 체크 표시된 셀을 변경하여 지정된 섹션의 배열을 스캔하고 선택한 행을 선택 취소 한 다음 선택한 행을 검사 할 수 있습니다.

물론, 당신은 사전의 배열의 배열을 사용하여 데이터를 표시 할 필요가 없습니다, 당신이하지 않는 것이 좋은 기회가있어. 괜찮습니다. 여기에서 유의할 점은 테이블의 위임 및 데이터 소스를 구현하여 체크 마크를 지원하고 특정 특정 항목에서 체크 표시가 있거나 없도록하는 기능을 구현한다는 것입니다. 행은 테이블 데이터의 일부 측면에 의해 결정됩니다.

1

당신은 확인 표시로 셀의 accessoryType을 설정할 수 있습니다

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = ... // code to get the cell 

    // isCellSelectedAtIndexPath: is your custom method 
    // which encapsulates cell selection state logic 
    if ([self isCellSelectedAtIndexPath:indexPath]) 
    { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    } 
    else 
    { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
    } 

    return cell; 
} 
+0

사용자 지정 메서드 isCellSelectedAtIndexPath에 실제로 포함되는 내용은 무엇입니까? – user2552714

+1

+1 좋은 지적. @ user2552714, 해당 메서드는 아마도 셀에 체크 표시가 있어야하는지 여부를 결정하는 코드를 포함합니다. 다시 말하지만, 데이터 소스는 테이블을 채우기 위해 사용하는 모든 데이터를 기반으로 결정해야합니다. – Caleb

+0

두 번째 문장을 이해하지 못했습니다. 너는 그것을 정교하게 할 수 있니? – user2552714

관련 문제