使用UICollectionView的电子表格布局

时间:2013-02-13 19:28:06

标签: ios

如何使用UICollectionView创建类似布局的电子表格,其中每行显示单个对象的属性。

示例:

Customer Id   First Name   Last Name   Social  Address  Phone 

以下是我使用UITableView提出的内容:

funds = [[NSMutableArray alloc] init];
    columnNames = [NSArray arrayWithObjects:@"fundNumber",@"fundName",@"unitPrice",@"fundBalance",@"percentageOfAccountValue",@"futureContributionAllocation", nil];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FundCell"];

    Fund *fund = [funds objectAtIndex:[indexPath row]];

    for(NSString *columnName in columnNames)
    {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, 0, 100, 44)];

        label.backgroundColor = [UIColor clearColor];

        label.text = [fund valueForKey:columnName];

        x += label.bounds.size.width;

        [cell addSubview:label];

    }

    x = 0;

    return cell;
}

这是输出:

enter image description here

2 个答案:

答案 0 :(得分:2)

我不确定您是否能够调整标准流程布局 - 您可能需要创建自己的UICollectionViewLayout类 - 但这应该是相当简单的。

与表格视图一样,您的集合视图可以包含部分和项目:电子表格的每一行都可以是一个部分,然后各个元素(姓氏,社交,地址等)可以是项目。

如果您想要 true 电子表格之类的功能(即,您可以水平滚动垂直),那么您将不得不构建自己的布局类。否则你可以调整现有的流程布局,虽然可以说如果需要滚动,你可以基本上实现你所用的表视图。

答案 1 :(得分:2)

您可以使用UICollectionViewController自定义UICollectionViewFlowLayout的布局。您想要做的事情背后的想法是: 每列可以是一个部分 每个标题都是每个部分的标题。

对于你的例子: – numberOfSectionsInCollectionView: = 6(客户ID,名字,姓氏,社交,地址,电话) – collectionView:numberOfItemsInSection: =行数