具有动态内容的UITableViewCell

时间:2014-07-28 17:50:08

标签: ios objective-c uitableview

我有UITableView和动态单元格内容。

例如,每个单元格可以具有不同的内容,图像,文本。 我不能事先知道将在单元格中放置哪些内容,因此我无法提前创建变量。

单元格可能有0到5帧的图像。

如果我在LayoutSubviews中创建(alloc)需要我的图像帧,所有工作都可以,但是,当我重新加载表时,所有帧都被分配(因为在LayoutSubviews中重新创建了我的所有变量。

如何使用动态内容创建或创建单元格的机制!

 for (int i=0;i<[_cellAttachments count];i++) {

        if ([[[_cellAttachments objectAtIndex:i] valueForKey:@"type" ] isEqualToString:@"images"]) {

            UIView *attachmentsView = [[UIView alloc] init];
            attachmentsView.frame = CGRectMake(10, postHeight+10, 300, 48);
            [self.contentView addSubview:attachmentsView];

// some another code

我知道在LayoutSubviews中创建变量就像@property for attachmentsView一样好,但是我的cellAttachments数组可以有很多不同类型的对象用于填充单元...

在我的情况下,不同类型的细胞数量超过50种组合,这不是创造更多50个自定义细胞的想法

1 个答案:

答案 0 :(得分:0)

因此根据您的数据,您将决定哪一个单元格在哪一行?很容易建立这个并在layoutSubview中执行这个逻辑是不对的。

为每种类型的单元格创建不同的自定义tableCell类。并为每个人提供一个唯一的小区标识符。

假设您在cellForRowAtIndexPath方法中使用故事板,则会根据您的数据将每个单元格取消并返回正确的单元格。

以下是一个例子。

 static NSString*cellTypeA = @"CellTypeA";
 static NSString*CellTypeB = @"CellTypeB"";

    CellTypeA* cellObjectA  = [tableView dequeueReusableCellWithIdentifier: cellTypeA];

    CellTypeB* cellObjectB = [tableView dequeueReusableCellWithIdentifier: cellTypeB];

if (someLogic)
{
   return cellObjectA
}
else
{
  return cellObjectB
}