2012-01-11 4 views
0

Я использую Core Data для управления Thing (s), а затем UITableViewController/UITableViewCell, чтобы представить список вещей. Однако объект Thing имеет больше данных, чем то, что я отображаю в текстовом свойстве UITableViewCell, и когда я перехожу из UITableViewController к более подробному контроллеру представления Thing, то, что я действительно хочу, является указателем на объект Thing, поэтому я может передать его следующему контроллеру представления.userData для 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; 

Предположим теперь, я предполагаю, что переход связан соответствующим образом:

- (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, возможно, вызовите - (NSIndexPath *) indexPathForSelectedRow в prepareForSegue против UITableView и исходите оттуда.

ответ

1

Может быть, я что-то очевидное отсутствует, но, чтобы получить индекс пути ячейки, предполагая, что вы segueing из UITableViewController, не может использовать:

NSIndexPath * indexPath = [[само Tableview] indexPathForCell: cellSender] ;

+0

Спасибо! Ваше решение решает все мои проблемы с UITableViewCell! –

Смежные вопросы