1

ほとんどのUITableViewセルをペン先から作成します。この特定のプロジェクトにはたくさんあり、それらはさまざまなサイズです。

ここで、ペン先をデザインするときにセルの高さを指定します。この値を指定する場所は、これだけにします。

ただし、テーブルビュー:heightForRowAtIndexPath:は、nibがcellForRowAtIndexPathに読み込まれる前に呼び出されるため、値がありません。

コードで身長を再度指定する必要があるため、これは「やや」面倒です。

この値を取得するために、事前にペン先をプリロードすることができます。誰かがこれを管理するために使用する巧妙なパターンを持っていますか、それともあなたはそれと一緒に住んでいますか?

4

2 に答える 2

2

さて、これを少し簡単にするための3つの方法を考えることができます。

1)高さをペン先の名前にエンコードします-myNib.47.xib

2)可変ディクショナリを作成し、viewDidLoadで、キーとしてreuseIdentifierのエントリを作成し、オブジェクトとしてnsnumberのエントリを作成します。

3)2のバリエーション。viewDidLoadで、以下を使用してUINibオブジェクトをreuseIdentifierに関連付けます。

cellNib = [UINib nibWithNibName:@"MyCellNibXYZ" bundle:nil];

可変辞書で。セルが必要な場合は、次のように呼び出します。

UINib *nib = [mutableDictioanary objectForKey:...];
MyCell *cell = [[cellNib instantiateWithOwner:nil options:nil] objectAtIndex:0];

次に、高さが必要なときにセルをインスタンス化してから、それを投げることができます。インスタンス化は、アクセスごとにファイルを読み取るためにファイルシステムに移動するよりもはるかに高速です。

于 2012-07-24T11:36:07.313 に答える
0

あなたが書いた:今、私はそれを設計するときに私のペン先で私のセルの高さを指定します、そして私はこれが私がこの値を指定する唯一の場所であることを望みます。

本当に高さをでのみ保持したい場合は 、またはメソッドIBですべてのセルのインスタンスを作成する必要があります。そのインスタンスを使用して、セルの最終的な高さを決定できます。したがって、メソッドでは、これらの事前に初期化されたインスタンスを使用して、各セルの正確な高さを知ることができます。Nib-init:-loadView- tableView:heightForRowAtIndexPath:

あまりエレガントではありませんが、機能しています。

于 2012-07-24T11:34:19.847 に答える