userData для iOS UITableViewCell - PullRequest
       0

userData для iOS UITableViewCell

0 голосов
/ 11 января 2012

Я использую базовые данные для управления вещами, а затем UITableViewController / UITableViewCell для представления списка вещей. Однако объект Thing имеет больше данных, чем просто то, что я отображаю в текстовом свойстве UITableViewCell, и когда я перехожу от UITableViewController к более подробному контроллеру представления Thing, мне действительно нужен указатель на объект Thing, поэтому я может передать его следующему контроллеру представления.

Например:

-(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 Ответ

1 голос
/ 11 января 2012

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

NSIndexPath * indexPath = [[self tableView] indexPathForCell: cellSender];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...