问候 StackOverflow。
我有一个场景,其中我有一个 UITableView 具有动态数量的部分。这意味着该表可能有 1 个部分、5 个部分、100 个部分,等等。
问题是,每个部分都以不同的方式处理和显示。
例如,第 0 节包含紫色单元格列表,而第 1 节包含黄色单元格。
因此,我需要能够计算每个部分类型最终将作为.
我的意思是,假设部分的优先级如下:
洋红色,黄色,绿色,白色
然后当所有部分被填充时,它们将按顺序排列,M = 0,Y = 1,G = 2,W =3。
但是,当缺少一个部分时,比如 Yellow,结果如下:
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
这里有一个模式。一个非常复杂的,是的,但仍然是一个模式。
我对你们所有人的问题是,您是否可以将此模式简单地转换为一个小的,可能是递归函数,我传入该部分的优先级,并计算目标索引。
或者
,如果您可以创建一个更简单的方法来实现我所需要的。
对于后者,仅将显示的行数设置为 0 是不够的,因为该部分的填充仍然存在。
我提供了一个辅助函数——如上面的 copypasta 代码所示——来检查是否应该显示一个部分:[self shouldDisplaySection:n]
这很可能满足你的所有需要。