我使用核心數據來管理物品,然後使用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並從那裏繼續。
謝謝!您的解決方案解決了我與UITableViewCell有關的所有問題! – 2015-04-29 13:46:20