【问题标题】:Get update row height in cell after heightForRowAtIndexPath在 heightForRowAtIndexPath 之后获取单元格中的更新行高
【发布时间】:2015-10-22 23:08:55
【问题描述】:

我正在尝试在单元格的 setProperty 中访问 TableViewCell 的高度。

我正在通过 xib 创建单元格,然后根据 heightForRowAtIndexPath 中返回的值更改高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {    
    return 200;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
        RightGuideCell* cell = [tableView dequeueReusableCellWithIdentifier:@"cellId"];
        cell.ticks = @[@"1",@"1",@"1",@"1",@"1",@"1",@"1"];
        return cell;
}

这是我单元格中的属性。

- (void)setTicks:(NSArray *)ticks {
    _ticks = ticks;
    CGFloat height = self.frame.size.height; //Value is 44 (size in xib)
}

如何在单元格中获得 200(在heightForRowAtIndexPath 中设置)?

【问题讨论】:

  • 高度已在 cellForRowAtIndexPath 中计算,因此您可能需要在此之后重新加载单元格。这将获得新的高度,但可能会占用大量资源。

标签: ios objective-c cocoa-touch tableview


【解决方案1】:

如果你不想使用像这样的动态单元格大小

https://www.youtube.com/watch?v=LFBTbmvFR30

最好的方法,尝试使用自定义布局来进行collection view,例如

https://github.com/bryceredd/RFQuiltLayout

你可以用自定义布局做惊人的事情,你应该尝试一下。

【讨论】:

    【解决方案2】:

    它以不同的方式工作。 tableview 使用 heightForRowAtIndexPath 来了解为您的单元格保留多少空间,以便它可以以所需的方式布局单元格。 当您从 xib 创建一个单元格时,它具有您绘制它的大小,与表格视图为单元格保留的大小无关。

    因此,如果您希望它与表格视图中的给定空间匹配,则必须在创建单元格时(dequeque...)或在 setTicks 方法中调整单元格的大小(更改框架),因为这两个信息不是相关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 2020-01-07
      相关资源
      最近更新 更多