通过segue从UITableViewCell填充DetailController

时间:2013-03-13 17:02:35

标签: iphone objective-c cocoa-touch uitableview nsmanagedobject

我正在填充来自UITableView的{​​{1}}中的单元格,我对如何最好地将我需要的数据传输到CoreData(即DetailController的问题提出疑问显示何时敲击单元格。

目前在填充viewController时,我使用传递给单元格的UITableViewCell从核心数据中检索相应的indexPath。在这个阶段,我只使用来自托管对象的一些信息更新单元格(即名称,年龄,性别)。

完全填充managedObject后,我想允许用户选择UITableView并显示UITableViewCell,以显示更深入的信息(即姓名,年龄,性别,职业) ,重量,高度等。)点击单元格后,我使用DetailController转换为新呈现的-prepareForSegue

我的问题:

"发件人"对于segue是DetailController(子类),但我只用最初显示在较小单元格中所需的信息填充了它。我应该

  1. 将更多iVar添加到UITableViewCell子类并存储所有数据 我需要,
  2. 将单元格上的指针iVar保留到模型UITableViewCell
  3. 我可能错过的其他内容?

1 个答案:

答案 0 :(得分:5)

使用我们在objective-c中使用的Model View Controller模式您的视图永远不会知道您的数据模型。这意味着您的UITableViewCell不应具有存储数据模型中对象的任何属性。单元格应该只有标签和视图作为属性,视图控制器使用-tableView:cellForRowAtIndexPath方法或类似方法中的模型填充数据

在准备segue时,您将UITableViewCell对象作为发件人。您可以使用以下方法找到单元格的索引路径:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSIndexPath * selectedIndexPath = [self.tableView indexPathForCell:sender];
    ...

然后,您可以使用此索引路径再次从核心数据中提取模型对象,并将其设置为下一个视图控制器上的属性,或者将模型对象向前传递所需的任何操作