UITableViewCellのサブクラスを大量に作成しました。それぞれが追加のBGBaseTableViewCellクラスのサブクラスです。
高さを尋ねられたら、UITableViewCellの一般的なサイズをユーザーに伝えると便利だと思います。
これを行う1つの方法は、それを2回指定することです。
1つはxibでUITableViewCellを設計するとき、もう1つは一般的なサイズをハードコーディングしたときです。
これは設計上の欠陥です。xibで変更するときに、ハードコードされた標準サイズを変更することを忘れないでください。
私はそれを望んでいません。UITableViewCellをxibで設計したいのですが、クラスが初期化されたときにデフォルトの高さを保存したいと思います。
デフォルトの高さは、すべてのサブクラスで異なる必要があります。ただし、そのサブクラスのすべてのインスタンスで同じである必要があります。
単純なivarを使用する場合、すべてのインスタンスに対してその1つのデフォルトサイズを保存する必要があります。
静的変数を使用する場合、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;
}