2012-01-11 45 views
0

我使用核心數據來管理物品,然後使用UITableViewController/UITableViewCell來呈現物品列表。然而,Thing對象的數據比我在UITableViewCell的text屬性中顯示的要多,當我從UITableViewController繼承到Thing的更詳細的視圖控制器時,我真正需要的是一個指向Thing對象的指針,所以我可以將它傳遞給下一個視圖控制器。iOS的用戶數據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; 
} 

如果我能得到indexPath小區是在然後我可以用我的NSFetchResultsController在至少再次獲取objectAtIndexPath,或許在prepareForSegue中針對UITableView調用 - (NSIndexPath *)indexPathForSelectedRow並從那裏繼續。

回答

1

也許我失去了一些東西很明顯,但要獲得小區的索引路徑,假設你從一個UITableViewController segueing,你不能使用:

NSIndexPath * indexPath = [[自我的tableView] indexPathForCell:cellSender] ;

+0

謝謝!您的解決方案解決了我與UITableViewCell有關的所有問題! – 2015-04-29 13:46:20