2013-06-05 68 views
1

我想要做的是以下幾點:它基本上是一個表格視圖,顯示一些具有許多值的單元格。如何使用UITableView中的「子列表」和搜索欄?

enter image description here

當選擇一個值 - 細胞時,它打開新的細胞與來自所選擇的一個的值子值。

enter image description here

這也將讓能夠使這些細胞之間的搜索用戶。

enter image description here

我已經用了很多UITableViews所以我沒有問題,選擇,顯示數據,處理事件等 我從來沒有使用表格視圖與搜索欄,但據我紅色在很多教程中看起來並不複雜。 所以只有2點我需要你的幫助。

  • 什麼是顯示當值細胞抽頭(當然再次把他們藏在重新挖掘價值細胞的情況下),這些新細胞的最佳途徑。
  • 最棘手的一點似乎是在這裏,我怎樣才能使用搜索欄來查看值單元格中的數據而不是次值的單元格?例如,如果用戶已經點擊並打開值2和5的子值,如果他在搜索欄中插入「2」,值爲「5」的單元格及其所有的子值單元格將被隱藏,但「2」一個會繼續顯示其子值。

感謝您的幫助。

回答

1

什麼是展示這些新細胞的最佳途徑時,值細胞 抽頭(當然再次把他們藏在重新挖掘價值 電池的情況下)。

最簡單的方法是在展開單元格時向數據數組添加更多行,並在摺疊時刪除它們。自定義「子列表單元格」的外觀並跟蹤當前展開的單元格。您也可以使用https://github.com/OliverLetterer/UIExpandableTableView(我沒有使用它,所以不能評論它)。

最棘手的問題似乎是在這裏,我該如何使用搜索欄 只查找在值單元格的數據,而不是在子值的呢?例如,如果用戶已經從值 2和5中點擊並打開了子值,如果他在搜索欄中插入「2」,則值爲「5」的單元格及其所有子值單元格將被隱藏,但是「2」將保持 與其子值一起顯示。

這是比較容易的部分,我會說。您負責搜索表格視圖數據並向搜索顯示控制器提供過濾列表。這是通過這兩種方式來完成:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 
{ 
    [self filterContentForSearchText: searchString 
           scope: [self.searchDisplayController.searchBar scopeButtonTitles][[self.searchDisplayController.searchBar selectedScopeButtonIndex]]]; 
    return YES; 
} 


- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption 
{ 
    [self filterContentForSearchText: [self.searchDisplayController.searchBar text] 
           scope: [self.searchDisplayController.searchBar scopeButtonTitles][searchOption]]; 
    return YES; 
} 

filterContentForSearchText:scope:方法,只搜索「超級名單細胞」,而不是「分榜單細胞」。您可以自定義搜索顯示錶的單元格,使其看起來像超級列表/子列表:UITableView Controller with prototype custom cell and search display controller tableview

希望這有助於!

1

什麼是最好的方式來顯示這些新的單元格,當價值單元被點擊時(當然重新點擊值單元格的情況下再次隱藏它們)。

看看GitHub上的TLIndexPathTools project。它可以輕鬆構建像這樣的動態表,只需很少的工作。最值得注意的是,它會自動執行批量更新以在狀態之間進行動畫播放。有幾個示例項目,與您的情況最相似的是collapsable "Outline" project