我创建了大量的 UITableViewCell 子类。每一个都是额外的 BGBaseTableViewCell 类的子类。
当被问及高度时,我认为告诉用户 UITableViewCell 的典型大小是多少会很有用。
一种方法是指定两次。
一次是我在 xib 中设计 UITableViewCell,第二次是我硬编码典型尺寸。
这是一个设计缺陷,因为当我在 xib 中更改内容时,我需要记住更改硬编码的典型大小。
我不想要那个。我想在 xib 中设计我的 UITableViewCell 并且在初始化类时我想存储默认高度。
所有子类的默认高度需要不同。但是,对于该子类的所有实例,它必须相同。
如果我使用简单的 ivar,那么我将不得不为所有实例存储一个默认大小。
如果我使用静态变量,那么 BGBaseTableViewCell 中的静态变量将被它的所有子类使用。
所以我该怎么做?
这就是我现在正在做的事情:
static CGFloat defaultHeightSet = 0; //this one is used by all subclasses. I want each subclass have it's own defaultHeightSet, but I want to specify that fact once.
+(void)initialize
{
BGBaseTableViewCell * typical = [[self alloc]init];
defaultHeightSet = typical.bounds.size.height;
}
+(CGFloat) defaultHeight
{
return defaultHeightSet;
}