2012-02-03 23 views
0

すべて、マルチセクションテーブルビューを実装するためのベストプラクティス

私はTableViewに読み込んでいる定義で約3000語を持っています。今は、単語を並べ替えただけのリストです。まだ追加していないので、セクションには表示されません。私はいくつかの確認を探しています私はこれに飛び込む前に、私は私のテーブルビューのデータ(A、B、C ...)にセクションを追加する必要があるので、これを行うには、いくつかの方法があるように思わ

Table View without Sections

私が間違ったウサギの穴を下っていくのであれば修正してください。テーブルビューは、このコードあたりNSMutableArrayのにオブジェクトとして格納されている読み出し

現在データ:

//AppDelegate.m 
- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 

//... 

NSMutableArray *wordArray = [[NSMutableArray alloc] init]; 

//Loop through result set from DB and populate objects 
while([rs next]){ 


     [wordArray addObject:[Word wordWith:[rs stringForColumn:@"word"] 
           Definition:[rs stringForColumn:@"definition"] 
           SectionIndex:[rs stringForColumn:@"sectionIndex"]]]; 



    } 
    MainViewController *mainViewController = 
    [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil]; 

    mainViewController.listContent = wordArray; 

    //... 

} 

は、各オブジェクトがセクションインデックス値([A-Z0-9])ので、私はすでに知っています各単語が入るセクション、私はセクションが何である必要があるのか​​分かり、各セクションのオブジェクト数を簡単に導き出すことができます。すでに処理されているので、NSMutableArrayに値が設定される前に、すべての単語がSQLでソートされています。

1つのNSMutableArrayで複数のセクションを作成することができますか、別の処理を行う必要がありますか?

ありがとう

答えて

1

各文字のNSDictionaryの保持キーの中に配列に単語を保存することができます。セクション内の行数が

NSArray * keys = [dictionary allKeys]; 
[(NSArray *)[dictionary objectForKey:[keys objectAtIndex:sectionIdx]] count]; 

を返します

NSArray * keys = [dictionary allKeys]; 
[keys objectAtIndex:sectionIdx] 

セクションの

番号はセクション

ため

[[dictionary allKeys] count]; 

タイトルを返します各ワードは

NSArray * keys = [dictionary allKeys]; 
[(NSArray *)[dictionary objectForKey:[keys objectAtIndex:sectionIdx]] objectAtIndex:indexPath.row]; 
でしょう
0

私はあなたのリストに並べ替えを追加したいと思うことがあります。そして別のアプローチが興味深いかもしれません。すべてのモデル(あなたの例ではWord)を辞書に入れ、モデルの固有の値をキーにします。

ソート方法を実装します。これは、基本となる辞書が変更されるたびに実行されます。ソート方法は、例えば、 keysSortedByValueUsingComparatorを辞書に追加し、異なるソート順に異なるブロックを指定します。ソート方法でセクション配列を作成し、辞書内のキーに対応する配列にキーを追加します。

あなたは何も2回保存せず、異なるソートブロック(モデルクラスの任意のプロパティを参照できる)を提供するだけで、異なるソート順を得ることができます。

関連する問題