5

如何使用 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;
}

这是输出:

在此处输入图像描述

4

2 回答 2

2

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

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

如果您想要真正的电子表格功能(即,您可以水平垂直滚动),那么您将不得不构建自己的布局类。否则,您可能能够适应现有的流程布局,尽管可以说如果您不需要滚动,您基本上可以使用表格视图来实现您所追求的。

于 2013-02-13T19:34:09.383 回答
2

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

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

于 2013-02-13T19:38:58.917 回答