2013-11-15 26 views
1

因此,我在這裏遇到了一些問題,我想我在這篇文章的標題中明確表達了自己的觀點。我想根據我在代碼中聲明的順序對UITableView標題進行排序。我試過網上衝浪,但我找不到任何解決方案。如何根據聲明順序對UITableView頭文件進行排序

我覺得從這裏可以幫助。提前致謝!

編輯:這是我的代碼的表視圖內容

NSDictionary *temp = [[NSDictionary alloc]initWithObjectsAndKeys:accSettingsOpts, @"Account",notifSettingsOpts,@"Notifications",aboutOpts,@"About",logoutOpt,@"Sign Out",nil]; 

我想顯示由

-Account 
-Notifications 
-About 
-Sign Out 

排序表視圖,但它顯示爲

-About 
-Account 
-Notifications 
-Sign Out 

編輯:這是如何解決問題。

從提供的答案在我下面接受基礎,我修改了它作爲

@interface myClass() 
NSArray *headerArr; 
@end 

viewDidload我加入

headerArr = [[NSArray alloc]initWithObjects:@"Account",@"Notifications",@"About",@"Sign Out", nil]; 

,最後...

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ 
    return [headerArr objectAtIndex:section]; 
} 

謝謝爲幫助傢伙。我並不認爲這很簡單。

回答

2

字典是一個無序的集合。如果您將項目存儲在字典中,則其定義的順序不會保存在任何位置。

表視圖是一個內在排序的對象列表。因此,字典不適合作爲存儲表格視圖的項目的方式。然而,一個數組爲表格視圖創建一個自然的數據源。使用數組而不是字典可以使用數組。就這麼簡單。您可以使用字典數組或其他數據對象的數組,然後編寫cellForRowAtIndexPath方法以從模型(數組元素)中提取數據並將值安裝到單元中。

+0

它幫助!非常感謝!我將我的標題數據存儲在一個數組中,並用它來顯示文本標題... +1,我接受了答案。 – caribbean

2

訂單與聲明訂單不同的原因是NSDictionary是無序的:它是根據您的字符串的哈希碼進行排序的,這是非常隨意的。

要強制執行特定訂單,請使用具有固定訂單的貨櫃,例如NSArray。例如,您可以將accSettingsOptsnotifSettingsOpts等存儲在一個數組中,將header屬性添加到Opts類中,然後通過該屬性在UITableView中設置節標題。

+0

這與接受的答案相同,但我接受了第一個發佈。但我爲此給了你+1。非常感謝! – caribbean

相關問題