在Custom UITableView中使单元格出列

时间:2014-01-17 00:09:28

标签: ios objective-c uitableview

这是一个我正在寻找的意见,而不是一个问题但是......

我有一个从数组中读取单元格的tableview。我知道这并不是真的很鼓励,但我想这样做是为了让我的桌子很容易被其他开发人员配置。

我的问题在于细胞出列。这段代码完美无缺,但我不禁想到我写的是不合适的。如果有人有任何建议,我很乐意听到他们的声音吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    DialogViewSection *currentSection = self.sections[indexPath.section];
    DialogViewCell *currentCell = currentSection.sectionCells[indexPath.row];

    // Configure the cell...
    if ([currentCell isMemberOfClass:[EntryCell class]]) {
        DialogViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kEntryCellIdentifier];
        cell = currentCell;
        return cell;
    }
    else {
        DialogViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kBooleanCellIdentifier];
        cell = currentCell;
        return cell;
    }
}

1 个答案:

答案 0 :(得分:2)

哇,你只会让下一个开发者更加困惑。我作为开发人员发现它看起来很混乱,并且可以告诉你它不是正确的标准。

对于您的节单元格,您确实需要使用tableView的- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;委托方法,而不是返回节的单元格。因为返回要将其描绘为节的单元格的行为与截面视图的行为方式不同,也就是将其悬停在单元格上方,直到下一部分向上滚动为止。检查iOS设备上的联系人应用程序,以查看部分视图在大多数情况下的行为方式。

您也希望以正常方式将单元格出列,让您的UITableview处理它。它还允许其他开发人员立即了解正在发生的事情。

就像一个想法:

考虑使用包含数组的多维字典在一个地方存储您的部分和单元格数据的索引这样的数据模型可能如下所示:

NSMutableDictionary index{
    "Section 1" = array(
                   section cell,
                   array(
                       Cell 1,
                       Cell 2,
                       Cell 3,
                   )
                },
    "Section 2" = array(
                   section cell,
                   array(
                       Cell 1,
                       Cell 2
                   )
                },
    "Section 3" = array(
                   section cell,
                   array(
                       Cell 1,
                       Cell 2,
                       Cell 3,
                       Cell 4
                   )
                }
}

这样的数组可以通过将所有部分存储在NSDictionary中来创建,其中一个数组将您的section单元存储在数组的第一个元素中,而在第二个元素中,您可以存储另一个包含与该数组关联的所有单元格的数组

我不建议您将CUSTOM CELLS存储在一个数组中,而是存储将填充您的单元格的数据。