UITableView 强制 sectionIndex 更新而不调用 reloadData

Posted

技术标签:

【中文标题】UITableView 强制 sectionIndex 更新而不调用 reloadData【英文标题】:UITableView force sectionIndex to update without calling reloadData 【发布时间】:2015-06-10 01:02:05 【问题描述】:

我正在从PHChange 实例修改我的UITableView 的数据源,这工作正常。我不明白的是,我无法更新 UITableView 右侧的 sectionIndex,除非您使用:reloadData 重新加载整个 UITableView

还有其他方法可以强制更新UITableView右侧的sectionIndex吗?如果我手动调用:sectionIndexTitlesForTableView: 我确认我正在取回新数据,但是右侧的旧 sectionIndex 在视觉上没有变化,这是我需要的。

代码:

PHFetchResultChangeDetails *changeDetails = [changeInstance changeDetailsForFetchResult:oldFetch];

if (changeDetails)

   PHFetchResult *fetchResultAfterChange = changeDetails.fetchResultAfterChanges;

   if (fetchResultAfterChange.count < 1)
   
       [subArray removeObjectAtIndex:subIdx];

       dispatch_async(dispatch_get_main_queue(),^
       
            NSIndexPath *path = [NSIndexPath indexPathForRow:subIdx inSection:idx];

            [self.albumsTableView deleteRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationNone];

            // Confirmed data is updating            
            NSLog(@"%@",[self sectionIndexTitlesForTableView:self.albumsTableView]);

            // Does nothing                    
            [self.albumsTableView setNeedsDisplay];
        );
    

【问题讨论】:

【参考方案1】:

试试这个功能

- reloadSectionIndexTitles

此方法为您提供了一种在插入或删除节后更新节索引的方法,而无需重新加载整个表。

【讨论】:

不知道我怎么没有在自动代码完成中看到这个。谢谢! 这个方法不常用。:) 这是一种救命方法

以上是关于UITableView 强制 sectionIndex 更新而不调用 reloadData的主要内容,如果未能解决你的问题,请参考以下文章

强制 UITableView 为所有单元格调用 cellForRowAtIndexPath:

如何强制 uitableview 调整单元格的大小(在停用高度约束后)?

如何在保持 UISearchBar 处于活动状态的同时强制 UITableView 重新加载数据?

使用自动布局强制 UITableView 中的 UIView 填满屏幕

iOS7 UITableView 部分中的最后一个单元格强制全宽分隔符

UITableView, setContentOffset 动画:NO 不会在 iPad 上滚动