计算动态UITableView部分的公式

时间:2012-08-28 01:25:08

标签: xcode uitableview dynamic formula

问候StackOverflow。

我有一个场景,其中我有一个带有动态部分的UITableView。 这意味着该表可能有1个部分,5个部分,100个部分,无论如何。

问题是,每个部分都以不同的方式处理和显示

例如,第0节包含紫色单元格列表,第1节包含黄色单元格 因此,我需要能够计算每个部分类型最终的索引

我的意思是,假设这些部分的优先级如下:
洋红色,黄色,绿色,白色
然后当所有部分都填满时,它们将按顺序排列,M = 0,Y = 1,G = 2,W = 3。
但是,如果缺少一个部分,例如黄色,则结果如下:
M = 0,Y = -1,G = 1,W = 3
从而从列表中删除黄色,然后降低该部分的索引。

我已经使用三级语句构建了一些可以实现小部分大小的内容,但是当它手动定义每个部分类型时,它很快就会出现不成比例的情况:

// Here be some dragons.
// Each macro identifies a section 
#define SectionMagenta  (([self  shouldDisplaySection:0])?0:-1) // 1 tertiary statements
#define SectionYellow   (([self  shouldDisplaySection:1])?((SectionMagenta==-1)?0:1):-1) // 3 tertiary statements
#define SectionGreen    (([self  shouldDisplaySection:2])?((SectionMagenta==-1)?((SectionYellow==-1)?0:1):((SectionYellow==-1)?1:2)):-1) // 11 tertiary statements
#define SectionWhite    (([self  shouldDisplaySection:3])?((SectionMagenta==-1)?((SectionYellow==-1)?((SectionGreen==-1)?0:1):((SectionGreen==-1)?1:2)):((SectionYellow==-1)?((SectionGreen==-1)?1:2):((SectionGreen==-1)?2:3))):-1) // 63 tertiary statements

这里有一种模式。一个非常复杂的,是的,但一个模式一点也不少。

我问你们所有人,就是你可以将这个模式简单地转换成一个小的,可能是递归函数,我传入该部分的优先级,并计算目的地索引
OR
如果你能创造一种更简单的方法来实现我的需要 对于后者,仅仅将显示的行数设置为0是不够的,因为该部分的填充仍然存在。

我提供了一个辅助函数 - 如上面的copypasta代码所示 - 检查是否应显示一个部分:[self shouldDisplaySection:n] 这很可能提供你所需要的一切。

1 个答案:

答案 0 :(得分:1)

听起来你真的想要使用一个有序字典,只需将你想要的值推到它上面,然后按顺序读取它们,并将数字索引作为你的部分顺序。

在Obj-C中实现的有序字典的一个相当好的例子是http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html