类似电子表格的布局使用UICollectionView

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;
}

这里是输出结果:

这里输入图片描述

2个回答

2

我不确定您是否能够适应标准的流式布局 - 您可能需要创建自己的UICollectionViewLayout类 - 但这应该很容易实现。

与表视图类似,您的集合视图可以拥有部分和项:您电子表格的每一行都可以成为一个部分,然后单独的元素(姓氏,社会,地址等)可以成为一个项目。

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


谢谢!我只需要垂直滚动。我会检查一下UITableView,也许我能够利用它来代替集合视图。 - azamsharp
我喜爱集合视图,但如果你不需要横向滚动的话,使用UITableView可能更容易。此外,你还可以支持iOS 5(如果需要的话)。 - lxt
我遇到的主要问题是,我需要一个单独的集合,其中包含所有需要在列中显示的属性,例如名字、姓氏等。此外,我需要动态创建标签,然后将其添加到UITableViewCell中,并增加x间距。 - azamsharp

2
你可以使用UICollectionViewFlowLayout自定义UICollectionViewController的布局。你想要做的是: 每个列都可以作为一个section 每个标题将成为每个section的header。
例如: - numberOfSectionsInCollectionView: = 6 (客户ID,名字,姓氏,社交信息,地址,电话) - collectionView:numberOfItemsInSection: = 行数

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接