我有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个自定义细胞的想法
答案 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
}