我有一個相當大的UITableView(〜10k條目),我需要一個索引,哪些應該是可排序的;在較舊的設備上(例如iPhone 4s,iPhone 5),它在搜索過程中有時會掛起一點點,因爲我總是需要重新創建索引。UITableView:創建索引的最高性能方法?
我不需要定位,但仍然UILocalizedIndexedCollation
要走的路?還是有一個標準的iOS的東西來創建高性能指數?
我有一個相當大的UITableView(〜10k條目),我需要一個索引,哪些應該是可排序的;在較舊的設備上(例如iPhone 4s,iPhone 5),它在搜索過程中有時會掛起一點點,因爲我總是需要重新創建索引。UITableView:創建索引的最高性能方法?
我不需要定位,但仍然UILocalizedIndexedCollation
要走的路?還是有一個標準的iOS的東西來創建高性能指數?
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>
}
「大」指的不是高度,而是條目的,我的意思是你有這麼多的數據量:) – swalkner
SRY基因有關,我的工程是壞需要加載,你可以試試這個 – user6492860
你怎麼現在創建索引? – Paulw11