如何使用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;
}
这是输出:
答案 0 :(得分:2)
我不确定您是否能够调整标准流程布局 - 您可能需要创建自己的UICollectionViewLayout
类 - 但这应该是相当简单的。
与表格视图一样,您的集合视图可以包含部分和项目:电子表格的每一行都可以是一个部分,然后各个元素(姓氏,社交,地址等)可以是项目。
如果您想要 true 电子表格之类的功能(即,您可以水平滚动和垂直),那么您将不得不构建自己的布局类。否则你可以调整现有的流程布局,虽然可以说如果不需要滚动,你可以基本上实现你所用的表视图。
答案 1 :(得分:2)
您可以使用UICollectionViewController
自定义UICollectionViewFlowLayout
的布局。您想要做的事情背后的想法是:
每列可以是一个部分
每个标题都是每个部分的标题。
对于你的例子:
– numberOfSectionsInCollectionView:
= 6(客户ID,名字,姓氏,社交,地址,电话)
– collectionView:numberOfItemsInSection:
=行数