2009-06-26 3 views
1

나는 영화 시간을 표시하기 위해 iPhone 응용 프로그램을 설계하고 코딩하는 과정에 있습니다.UISegmentedControl로 정렬하기 위해 UITableView의 데이터 소스를 어떻게 디자인합니까?

  • NSString title
  • NSSDate releaseDate
  • NSSDate score

내 UI가이 영화를 표시하는 제목과 UITableView의 같은 세그먼트 제어 할 수있는 간단한 UINavigationController이다 : 나는 현재이 포함 된 영화 등급이 Interface Builder에서 설정하십시오. 세분화 된 컨트롤에는 Title, Opening Date 및 Score (RottenTomatoes)의 세 가지 세그먼트가 있습니다. 테이블 뷰의 데이터는 현재 AppDelegate의 속성 인 NSMutableArray movies에 의해 제공됩니다.

나는 다음과 같은 코드를 사용하여 대상 작업을 등록 할 수 있다는 것을 알고,하지만 난이 시점에서 UITableView 데이터를 정렬하는 방법이 확실하지 :

[segmentedControl addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged]; 

어떻게 그리고 어디에서 UITableView 때마다 UISegmentedControl 리조트 않는다 선택한 세그먼트가 변경됩니까?

답변

1

NSArraysortArrayUsing xxx 메서드 중 하나를 사용하여 데이터를 정렬 할 수도 있습니다.

1

데이터 소스의 tableView:cellForRowAtPath: 메서드에 일부 논리를 추가하여 UISegmentedControl의 현재 값을 확인하고 각 행에 대해 반환 된 셀을 적절하게 변경할 수 있습니다. 그런 다음 세그먼트 컨트롤의 값이 변경 될 때마다

[tableView reloadData]; 

으로 전화하면됩니다.

1

세 가지 다른 방법으로 항목을 정렬/필터링 할 수있는 세그먼트 컨트롤이 있습니다. 필터/순서에 따라 항목 수가 다르기 때문에 정렬 된 목록을 유지하기 위해 3 가지 NSArray 개체를 사용합니다.

그래서 데이터를로드 할 때 각 버전의 올바른 위치에 필터를 배치합니다 (또는 필터에 따라 배열에 배치하지 않음).

세그먼트 화 된 컨트롤의 상태를 사용하여 반환 할 배열을 결정하는 호출이 있습니다.

배열을 호출하는 메서드는 일반 배열 대신 사용되므로 세그먼트 화 된 컨트롤이 변경되면 [tableView reloadData]가 호출되어 모든 작업이 완료된다는 것을 의미합니다.

관련 문제