2010-04-17 4 views
0

NSFetchedResultsControllerDelegate를 구현하는 컨트롤러를 통해 CoreData에서 채워지는 UITableView가 있습니다. 어떻게하면 자동으로 첫 번째 행을 선택하고 (그리고 tableView : didSelectRowAtIndexPath 메시지를 발생 시키십시오)?NSFetchedResultsControllerDelegate를 통한 UITableView는 기본적으로 첫 번째 레코드를 선택 하시겠습니까?

tableview는 다양한 조건문 쿼리에 사용되므로 UIViewController 라이프 사이클 (viewDidLoad 등)에서 작동하는 솔루션이 의심 스럽지만 플랫폼이 처음이므로 열려 있습니다.

나는 다양한 것을 시도했지만, 어디에서 호출 스택에 넣을 지 모르겠습니다. 나는 cellViewRowAtIndex : 메서드를 사용하여 셀을 검정색으로 바꾼다. (선택된 콜백 메서드를 실행하지 않는다.)

모든 위임 및 핵심 데이터 프로토콜을 사용하는 질문적인 질문은 비동기 데이터 가져 오기 (다중 스레드)를 의미합니까? NSFetchedResultsController가 같은 스레드에서 관련된 모든 메소드를 호출하고 있습니까? 어쩌면 나는 그것이 비동기 인 경우 나중에 문제를 해결하기가 어려울 경주 조건이있을 수 있다는 사실을 두려워 할 것입니다.

답변

0

셀을 선택했을 때 수행하려고하는 작업에 대해 아직 설명을 추가 할 수 없으므로 추측해야합니다.

예를 들어, 당신이 accessoryType 속성을 사용한다 선택한 당신은 셀을 표시 할 경우 : 첫 번째를 선택에 따라 일부 로직을 수행하려는 경우, 다른 한편으로

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ... 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    ... 
} 

셀을 표시하거나 새보기를 표시하는 경우에도이 논리는 데이터가로드 된 후에 간단히 호출 할 수있는 메서드에 있어야합니다. 물론

if (indexPath.section == 0 && indexPath.row == 0) { 
    //select first row by default 
    [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom]; 
    //then populate detail view with corresponding managedObject 
    [self tableView:tableView didSelectRowAtIndexPath: indexPath]; 
} 

이 이미 제대로 didSelectRowAtIndexPath 코딩 가정한다 :

+0

내 목표는 didSelectRowAtIndexPath 내부에 로직을 추가하여 다른보기에 데이터를 표시하는 것입니다. 기본적으로 데이터 모델의 드릴 다운입니다. 나의 격차는 정확하게 "데이터가로드되면 호출하는 방법"입니다. 이것은 "공상"으로 밝혀졌습니다. 테이블 로딩이 비동기 적으로 발생하는 webdeveloper ajax rut에서 멈추었 기 때문에 fetchedResultsController.performFetch를 호출 한 직후 첫 번째 행을 찾아 즉시 선택해야한다는 것을 결코 알지 못했습니다. 나를 풀어 줘서 고마워. – deafgreatdane

0

이 좋아하세요.

관련 문제