重新加载UITableView而不重新加载标题部分

时间:2016-05-09 11:35:39

标签: ios swift uitableview

我有UITableview部分和索引标题。当用户单击单元格时,高度为42的选项视图将显示在该单元格中。要显示该选项,我会重新加载单元格。但节标题也在不断更新。这给了奇怪的动画。如何仅重新加载单元格,而不会调用其他委托方法,如heightForHeaderInSectionviewForHeaderInSection

3 个答案:

答案 0 :(得分:2)

有几种方法可以重新加载tableview。

  1. 重新加载整个部分,包括部分的单元格。

    - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation

  2. 示例:

    [tableVIewContent reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationAutomatic];
    
    1. 重新加载单个/多个单元格

      - (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath > )indexPaths withRowAnimation:(UITableViewRowAnimation)animation

    2. 示例:

      [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:1]] withRowAnimation:UITableViewRowAnimationFade];
      
      1. 重新加载整个tableview。

        - (void)reloadData;

        //从头开始重新加载所有内容。重新显示可见行。因为我们只保留有关可见行的信息,这很便宜。如果表缩小,将调整偏移量

答案 1 :(得分:1)

我认为你应该只更新indexPath的特定行,试试下面的代码

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:NO];

    [tableView beginUpdates];
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    [tableView endUpdates];

}

它可能对你有帮助。

干杯。

答案 2 :(得分:1)

  

在Swift 2.0&amp;上述

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        tableView.beginUpdates() 
        tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        tableView.endUpdates()

       }