通过segue从UITableViewCell填充DetailController

fuz*_*oat 2 iphone cocoa-touch objective-c uitableview nsmanagedobject

我正在填充一个UITableViewfrom中的单元格,CoreData我有一个关于如何最好地将我需要的数据传输给我的问题DetailController(即viewController,当单元格被点击时显示的数据).

目前在填充UITableViewCells时,我使用indexPath传递给单元格managedObject从Core Data中检索适当的.在这个阶段,我只用托管对象的一些信息更新单元格(即名称,年龄,性别).

UITableView完全填充后,我想让用户选择一个UITableViewCellDetailController显示更深入的信息(即姓名,年龄,性别,职业,体重,身高等).当点击单元格时,我正在使用-prepareForSegue过渡到新呈现的DetailController.

我的问题:

segue的"发送者"是UITableViewCell(子类),但我只用最初在较小的单元格中显示的信息填充了它.我是不是该

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

jac*_*ash 5

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

UITableViewCell在准备segue时得到了作为发送者的对象.您可以使用以下方法找到单元格的索引路径:

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

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