0

StackOverflowのご挨拶。

動的な量のセクションを持つUITableViewがあるシナリオがあります。つまり、テーブルには1つのセクション、5つのセクション、100のセクションなどがあります。

問題は、各セクションが異なる方法で処理および表示されることです。

たとえば、セクション0には紫色のセルのリストが含まれ、セクション1には黄色のセルが含まれます。
したがって、各セクションタイプが最終的にになるインデックスを計算できる必要があります

つまり、セクションの優先度を次のようにすると仮定します。
マゼンタ、イエロー、グリーン、ホワイト次
に、すべてのセクションが塗りつぶされると、M = 0、Y = 1、G = 2、Wの順序になります。 =3。
ただし、1つのセクション、たとえば黄色が欠落している場合、結果は次のようになります
。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に設定するだけでは不十分です。

上記のコピーパスタコードに見られるように、セクションを表示する必要があるかどうかを確認するためのヘルパー関数を提供しました。これで、必要なもの[self shouldDisplaySection:n] がすべて提供される可能性があります。

4

1 に答える 1

1

実際に Ordered Dictionary を使用して、必要な値をそれにプッシュし、セクションの順序として数値インデックスを使用して順番に読み取りたいようです。

Obj-C で実装された順序付き辞書のかなり良い例は、http: //cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html にあります。

于 2012-08-28T02:00:56.507 に答える