UITableView中的多个Nib文件

时间:2014-05-26 14:48:32

标签: ios core-data nib custom-cell

我目前正在从Parse.com检索对象并将其保存到CoreData。

然后我接下来使用NSFetchedResultsController从CoreData中检索对象。然后,这些对象将用于创建表视图。我从CoreData检索的所有内容都使用以下代码存储在NSArray中:

NSArray *fetchedObjects = _fetchedResultsController.fetchedObjects;

使用fetched objects数组我希望根据每个对象的类型加载特定的nib文件。所以在cellForRowAtIndexPath中使用以下for循环我试图实现这个:

for (NSManagedObject *o in fetchedObjects)
{
    if ([[o valueForKey:@"type"] isEqual: @"Type1"])
    {
        Type1CustomCell *cell = (Type1CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"type1CustomCell"];
        return cell;
    }
    else if ([[o valueForKey:@"type"] isEqual: @"Type2"])
    {
        Type2CustomCell *cell = (Type2CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"type2CustomCell"];
        return cell;
    }
} 

前面的代码只是一个使用2种类型的示例,但在应用程序中可能会有更多。

return语句导致循环结束,这意味着循环永远不会超过第一个对象。有人可以根据我检索到的对象的类型,向我提出如何加载多个nib文件的正确方向吗?

由于

1 个答案:

答案 0 :(得分:1)

因此,您出去并返回可重用集合视图单元格的唯一时间是请求单元格的数据源方法。

当此方法触发时,它会为您提供一个特定的索引路径 - 它尝试创建的行的索引路径。

您不需要循环使用此方法中的任何内容。您只需要转到您正在存储数据的任何集合的正确索引,抓取该索引处的对象。使用该数据确定要返回的单元格。

而不是forin循环,只需抓住一个对象。

NSManagedObject *obj = [fetchedObjects objectAtIndex:indexPath.row];

if ([[obj valueForKey:@"type"] isEqual: @"Type1"]) {
    // etc...

我相信你仍然需要一个大的if-else结构,但现在我们只是检查表视图正在尝试创建单元格的特定索引处的对象。 / p>