2014-01-29 4 views
0

사용자 정의 셀이있는 테이블보기를 보여주는 화면을 포함하는 앱을 만들고 있습니다. 각 셀에는 두 개의 레이블과 다른 하위 뷰가 포함 된 하위 뷰가 있습니다. 셀의 하위 뷰 내에서 하위 뷰를 숨기거나 표시하기 위해 셀의 click 이벤트를 처리하고 있습니다. 단일 셀을 클릭하면 모든 셀의 하위보기가 변경되도록 어떻게 만들 수 있습니까? 모든 위의 그림에서와 같이UITableView에서 모든 셀의 하위보기를 변경하십시오.

enter image description here

, 당신은 녹색 상자 중 하나를 클릭 :

그것은 아이폰에서 주식 응용 프로그램처럼 (아이폰 OS 7을 사용), 여기 스크린 샷입니다 상자는 동일한 유형의 값을 반영하도록 변경됩니다.

이 접근 방식이 좋은지 또는 구현할 수 있는지 알려주세요.

답변

1

이렇게하는 데는 몇 가지 방법이 있습니다. 마음에 오는 그 첫 번째가있는 UITableViewCell 서브 클래스 내에서 여러 가지 상태를 처리 할 수 ​​있으며, 단지 눈에 보이는 세포를 다시로드합니다 :

[self.tableView reloadRowsAtIndexPaths:[self.tableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationAutomatic]; 

당신이 생각하는 과정을 통해 더 많은 제어를 위해 찾는 경우를,이 과정은 또한 수 미래의 셀을로드 할 상태를 변경 한 다음 모든 보이는 셀에서 메소드를 호출함으로써 성취됩니다. 이렇게하면 셀의 내용이 어떻게 업데이트되는지 완벽하게 제어 할 수있는 손쉬운 방법이 제공됩니다.

// Change flag for cell state then... 
for (NSIndexPath *indexPath in [self.tableView indexPathsForVisibleRows]) { 
    if (condition) { 
     MyCellSubclass *cell = (MyCellSubclass *)[self.tableView cellForRowAtIndexPath:indexPath]; 
     [cell someMethodWithArg:(id)state]; 
    } 
} 
1

Stock 응용 프로그램에서와 같이하려면 cellForRowAtIndexPath : 및 click 동작 메소드의 두 가지 메소드를 처리해야합니다. cellForRowAtIndexPath에서

: 당신이 그것에 셀/버튼을 누를 확인 및 표시 값 기반을 수행해야합니다

//Pseudo code 
//cellForRowAtIndexPath 
if (cellNo3Pressed) 
{ 
    //set up text with the right value. 
} 
else if (otherCell) 
{ 
    //set up text with the right value. 
} 

이 화면에 보이지 않는 셀을 처리합니다.

NSArray *paths = [tableView indexPathsForVisibleRows]; 

for (NSIndexPath *path in paths) 
{ 
    UITableViewCell *cell = (UITableViewCell *)[self.tableView cellForRowAtIndexPath:path]; 
    //Animate changes for cell 
} 
:

다음 동작 방법은 가시 셀의 모든에 좋은 애니메이션을 처리해야

관련 문제