2012-01-11 3 views
0

핵심 데이터를 사용하여 관리하고 UITableViewController/UITableViewCell을 사용하여 사물 목록을 표시합니다. 그러나, Thing 개체는 내가 UITableViewCell의 텍스트 속성에 표시하는 것보다 많은 데이터를 가지고 있습니다. 그리고 UITableViewController에서 더 자세한보기 컨트롤러를 사용하면 정말 원하는 것은 Thing 개체에 대한 포인터입니다. 다음 뷰 컨트롤러로 전달할 수 있습니다. 예를 들어iOS 용 userData UITableViewCell

: 이제

-(UITableViewCell*)tableView:(UITAbleView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
ENTRY_LOG; 
// Ask the NSFetchedResultsController for the NSManagedUserObject at the row in question 
Thing* thing = [self.fetchedResultsController objectAtIndexPath:indexPath]; 

// For brevity skip dequeueReusable... 

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
cell.textLabel.text = thing.name; 

EXIT_LOG; 
return cell; 

, 나는이 SEGUE가 적절하게 연결되어 가정 가정

- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender { 
    ENTRY_LOG; 

    UITableViewCell* cellSender = (UITableViewCell*)sender; 

    // I want to do this: 
    Thing* thingHandle = [cellSender someMessageToGetThingReference]; 
    [segue.destinationViewController setThing:thing]; 

    // and I don't want to do this 
    // setup NSFetchRequest and predicate to get thing where 'name = cellSender.text' 
    [segue.destinationViewController setThing:thing];  

    EXIT_LOG; 
} 

나는 그때 내 NSFetchResultsController에서에 사용할 수있는 셀이라는 indexPath를 얻을 수 있다면 최소한 objectAtIndexPath를 다시 얻으십시오. 아마 - (NSIndexPath *) indexPathForSelectedRow를 prepareForSegue에서 UITableView에 대해 호출하고 거기서부터 진행하십시오. 아마도

답변

1

나는 당신이있는 UITableViewController에서 segueing하는 가정, 뭔가를 분명 잃었지만, 셀의 인덱스 경로를 얻을, 수 없습니다 당신이 사용

NSIndexPath * indexPath = [[자기있는 tableView] indexPathForCell : cellSender] ;

+0

감사합니다. 귀하의 솔루션은 UITableViewCell로 모든 문제를 해결합니다! –