【问题标题】:Expanding and Collapsing header cells in UITableView在 UITableView 中展开和折叠标题单元格
【发布时间】:2014-10-01 11:38:23
【问题描述】:

前提很简单。我有一个UITablewView。我有一个故事板,我在其中配置了两个原型单元格,一个有一个 headerCell 的重用标识符,另一个的重用标识符是单元格。我正在我的UITableViewController 中实例化一个像这样的自定义标题单元格:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    MyHeaderCell* headerCell = [tableView dequeueReusableCellWithIdentifier:@"headerCell"];
    headerCell.delegate = self;

    return headerCell;
}

我的 headerCell 上有一个按钮,当点击该按钮时,它会调用[_delegate toggleHeaderSize]。您可以在上面看到委托属性只是UITableViewController。这是toggleHeaderSize 方法:

-(void)toggleHeaderSize {
    [self.tableView beginUpdates];

    if (headerHeight == 100) {
        headerHeight = 120;
    } else {
        headerHeight = 100;
    }
    [self.tableView endUpdates];

//    [self.tableView reloadData];

}

heightForHeaderInSection 方法中使用了 headerHeight 变量,如下所示:

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return headerHeight;
}

标题改变了大小,但这很奇怪。表格向下滑动,但标题实际上并没有增长。如果我只滚动表格一个像素,标题似乎意识到它需要重新绘制,并且它会调整大小。

我想我已经阅读了所有关于调整标题单元格大小的 SO 帖子。他们似乎都认为beginUpdates/endUpdates 舞蹈是神奇的。这些似乎确实是必要的,但它并没有解决重绘的问题。

这是我的问题的 GIF 动画。 编辑:我不能发布动画 GIF,因为我没有 10 个声望点,但是如果你去 http://nspaul.imgur.com/all/ 你可以找到它:-)

我希望得到任何指导。如果有人愿意,我可以发布更多代码。如果有帮助,我什至会将整个项目发布到 Github

【问题讨论】:

  • 你想要什么增加你的 headerCell 高度或你的 tableview 标题高度?
  • 既然我在viewForHeaderInSection 中使用了headerCell,那不是让headerView 成为tableviewHeader 吗?或者,headerCell 和 tableview 标头之间是否存在显着差异?如果有更好的方法可以做到这一点,请告诉我。这里的目标是使我用作标题的单元格更大,并使其具有动画效果。

标签: ios objective-c uitableview


【解决方案1】:
-(void)toggleHeaderSize {
    if (headerHeight == 100) {
        headerHeight = 120;
    } else {
        headerHeight = 100;
    }    
    [self.tableView reloadSections:mySections withRowAnimation:UITableViewRowAnimation];
}

方法beginUpdatesendUpdates 只为动画创建事务。您需要重新加载受影响部分的方法。

【讨论】:

  • 我尝试添加对该方法的调用,在我的情况下看起来像这样:[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; headerCell 消失了,我在控制台中得到了两次no index path for table cell being reused
猜你喜欢
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多