3

私のテーブルビューでは、さまざまなセル(5〜6種類)が必要です。すべてのアイテムの視覚的なレイアウトは同じですが、コンテンツに関しては(ラベル名、写真、色)、大きく異なります。

したがって、この一般的な設計でInterfaceBuilderで設計されたCustomUITableViewCell基本クラスがあります。このCustomUITableViewCellクラスサーバーは、一連のセルサブクラスの基本クラスです。これらのサブクラスは、ファクトリパターンを使用してファクトリクラスのクラスメソッドで生成します。これらのサブクラスにはxibsがありません。なぜ彼らは、共通のデザインを持っているのでしょうか。

問題は、サブクラスごとに異なる再利用識別子が必要なことです。したがって、サブクラスごとにデフォルトの初期化子をオーバーライドして、その中で別の初期化子を呼び出すことができますinitWithStyle:reuseIdentifier:

問題は、指定するスタイルが必要なことです。私はnilそこに置くことができません、それは不平を言います。しかし、私はAppleのスタイルを必要としません。私は明らかに自分のスタイルを持っています。ストックスタイルが必要な場合、なぜカスタムデザインを行うのでしょうか。私はreuseIdentifierを指定する必要があるだけです。

読み取り専用プロパティであり、それを提供する唯一の方法が初期化子を使用することであると思われる場合、再利用識別子を割り当てる方法は?

4

1 に答える 1

9

私はしばらく前に同様の問題を抱えていました。私の解決策は、(サブクラスの)reuseIdentifier実装ファイルで読み取り/書き込みプロパティとして再宣言することでしたUITableViewCell

@interface MyCustomCell ()
@property(nonatomic, readwrite, copy) NSString *reuseIdentifier;
@end

異なるインスタンス変数を使用してプロパティを合成するには、次のようにします。

@implementation MyCustomCell
@synthesize reuseIdentifier = _myCustomCellReuseIdentifier;

self.reuseIdentifierこれで、カスタムセルのinitメソッドで割り当てることができます。

少なくとも私の場合はうまくいきました、おそらくあなたはそれを使うことができます...

于 2012-10-04T14:53:43.510 に答える