【发布时间】:2014-10-22 18:53:02
【问题描述】:
我觉得很难把标题放在上面,所以请随时修改它。
我有一个数组,其中包含我在cellForRowAtIndexPath 中使用的 5 个CGSizes。
NSArray *mElements = [NSArray arrayWithObjects:[NSValue valueWithCGSize:
CGSizeMake(600.0, 900.0)],
[NSValue valueWithCGSize:CGSizeMake(300.0, 800.0)],
[NSValue valueWithCGSize:CGSizeMake(546.0, 1032.0)],
[NSValue valueWithCGSize:CGSizeMake(300.0, 700.0)],
[NSValue valueWithCGSize:CGSizeMake(300.0, 800.0)],
nil];
我目前从数组中获取随机大小并应用于每个单元格,使其具有交错布局。但是问题是,如果我重新加载UITableView,所有行的大小都会不同,这很明显,因为它每次都会选择一个随机值。
int random = arc4random_uniform((uint32_t) mElements.count);
CGSize size =[[mElements objectAtIndex:random] CGSizeValue];
但是我想要的效果是 row 0 将始终具有相同的大小,可能是数组的索引 0。然后 row 1 在索引 1 处具有值,然后在第 2 行具有在索引 2 处的值,依此类推。然后,我希望索引 4 处的 row 具有数组索引 0 处的值(因此数组重新开始)。我试过这个,但它需要太多的硬编码。
if (indexPath.item%2 && !indexPath.item%4) {
size =[[mElements objectAtIndex:1] CGSizeValue];
}
else if(indexPath.item%3 && !indexPath.item%6){
size =[[mElements objectAtIndex:2] CGSizeValue];
}
else if(indexPath.item%4){
size =[[mElements objectAtIndex:2] CGSizeValue];
}
//... and so on
我希望在创建动态条件状态时获得帮助,我不必对表中每个可能的row 索引进行硬编码。不过,我似乎无法理解它。
【问题讨论】:
标签: arrays uitableview conditional-statements