2017-05-05 51 views
1

我有一個相當大的UITableView(〜10k條目),我需要一個索引,哪些應該是可排序的;在較舊的設備上(例如iPhone 4s,iPhone 5),它在搜索過程中有時會掛起一點點,因爲我總是需要重新創建索引。UITableView:創建索引的最高性能方法?

我不需要定位,但仍然UILocalizedIndexedCollation要走的路?還是有一個標準的iOS的東西來創建高性能指數?

+0

你怎麼現在創建索引? – Paulw11

回答

0

1,也許你應該嘗試之前保存索引高度,你可以創建一個框架模型,並保存索引幀,每次創建一個索引將使用您如

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
NSDictionary *dict = self.dataList[indexPath.row]; 
CGRect rect = [dict[@"frame"] CGRectValue]; 
return rect.frame.height;} 
之前創建的幀數據

然後你可以使用這種模式來打包細胞。

2,你說我你有這麼多的電池需要創建,我不知道你用什麼數據源,但如果使用網絡數據和裝載在異步,你可能開這麼多的隊列,當你應用程序運行,當你滾動或當你網絡不那麼greate時,它會很糟糕,所以我建議你應該重新創建數據加載方法,當你快速滾動,只需在這個區域周圍加載單元格,當你滾動緩慢,你可以異步加載的圖像和文本數據源, 你可以做這件事情用uiscrollviewdelegate功能

NSArray *visiblePaths = [self.tableView indexPathsForVisibleRows]; 
    for (NSIndexPath *indexPath in visiblePaths) 
    //get cell you can see 
    { 
    //get datasource object,when object loading complete,stop loading. 
     <code> 
    } 

when tableview stop scroll,loading image 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    if (self.tableView.dragging == NO && self.tableView.decelerating == NO) 
     { 
      //star loading image,async 
      <code> 
     } 
+0

「大」指的不是高度,而是條目的,我的意思是你有這麼多的數據量:) – swalkner

+0

SRY基因有關,我的工程是壞需要加載,你可以試試這個 – user6492860