2

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

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

UITableView完全填充后,我希望允许用户选择一个UITableViewCell并显示一个DetailController显示更深入的信息(即姓名、年龄、性别、职业、体重、身高等)。当点击单元格时,我正在使用-prepareForSegue过渡到新提出的DetailController

我的问题:

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

  1. 向子类添加更多 iVarUITableViewCell并存储我需要的所有数据,
  2. 在单元格上保留指向模型的指针 iVarmanagedObject
  3. 还有什么我可能错过的?
4

1 回答 1

5

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

您将UITableViewCell对象作为发送者准备进行转场。您可以使用以下方法找出单元格的索引路径:

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

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

于 2013-03-13T17:13:51.920 回答