2012-02-03 152 views
0

全部,什麼是實現多部分TableView的最佳實踐

我有大約3000個詞的定義,我正在加載到一個TableView中。現在,這只是一個排序的單詞列表,沒有添加它們。

Table View without Sections

我需要的部分添加到我的TableView數據(A,B,C ...),並似乎有幾種方法可以做到這一點所以在我進入這個我要尋找一些確認或者如果我正在走錯錯誤的兔子洞,那就更正了。

目前所述的TableView讀取被存儲爲對象在每此代碼一個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進行了排序,以便處理完畢。

我可以用一個NSMutableArray創建多個部分,還是我需要做一些不同的事情?

感謝

回答

1

你可以你的話存儲到裏面的NSDictionary持有的陣列鍵對每個字母。

段數將返回

[[dictionary allKeys] count]; 

標題爲第

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

在節中的行數將返回

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

每個字將

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

我發現你有時想將排序添加到你的列表中,然後,另一種方法可能會很有趣。把你的所有模型(你的例子中的Word)放在一個字典中,並將模型的一些獨特值作爲關鍵字。

實現一種排序方法,每次底層字典更改時都會運行。分類方法將使用例如keysSortedByValueUsingComparator放在字典中,併爲不同的排序順序提供不同的塊。讓排序方法創建節數組並添加與字典中的鍵相對應的數組中的鍵。

你不存儲任何兩次,您只需提供不同種類的塊(可以看看你的模型類的任何屬性)獲得不同的排序順序。