UITableview heightForRowAtIndexPath:重新加载单元格中的标签

我有一个带有3个标签和一个按钮的自定义单元格。一切工作正常,直到我没有tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath为表格视图实现方法。(我需要它,因为我是根据标签的长度在此处设置单元格高度的。)问题是,当我点击时likeButtonlikeCountLabel.text将在IB中显示IB的标签样本值一秒钟,然后再次显示前一个(正确的)字符串。每个单元,而不仅仅是在窃听中。当我删除heightForRowAtIndexPath:它时,它又是完美的。正如我发现的那样,这是在重新加载表格视图后发生的,但是没有任何想法,因为当我不调整高度时,这些标签可以完美工作。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object {

    static NSString *CellIdentifier = @"cell";
    NewsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    PFQuery *query = [like query];

    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

        if (objects) {

            NSString *likeNumber = [NSString stringWithFormat:@"%d", objects.count];
            cell.likeCountLabel.text = likeNumber;

        }
    }];

    cell.likeButton.tag = indexPath.row;
    [cell.likeButton addTarget:self action:@selector(didTapLikeButton:) forControlEvents:UIControlEventTouchUpInside];


    cell.usrName.text = object[@"usrName"];
    cell.usrDescription.text = object[@"desc"];
    cell.date.text = object[@"date"];

    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {


    static NSString *CellIdentifier = @"cell";
    NewsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    PFObject *object = [self.objects objectAtIndex:indexPath.row];

    cell.usrName.text = object[@"usrName"];
    cell.usrDescription.text = object[@"desc"];
    cell.date.text = object[@"date"];

    //get the height the cell
    //  [cell layoutIfNeeded];
    CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;

    //paddign of 1 Point
    return height + 12;
}

- (void)didTapLikeButton:(id)sender {

    // Cast Sender to UIButton
    UIButton *button = (UIButton *)sender;

    PFObject *likeRow = [self.objects objectAtIndex:button.tag];
              [SaveHelper likeObject:likeRow withUploader:[PFUser currentUser]];
    [self.tableView reloadData];


}
罗克·贾克(Rok Jarc)

您不应该在其中出队或实例化单元格heightForRowAtIndexPath:-这会破坏模式(即:tableView要求一定的单元格高度,indexPath另一方面,您要求它为相同的实例化单元格,indexPath以便可以回答所需的高度。 ..)

cellForRowAtIndexPath:一个单元中,根据数据模型生成(或重用)并填充数据。如果像元高度取决于数据-该高度也应从数据模型计算得出。

为了避免实例化单元格,heightForRowAtIndexPath:您可以编写类似类方法+ (CGFloat) heightOfCellWithContent...然后使用此方法计算内某种类型的单元格所需的高度heightForRowAtIndexPath:

换句话说:您需要NewsTableViewCell 以能够告诉您具有特定内容的实例(该类型的单元格)所需的高度...

编辑:

你显然有一个UITableViewCell子类,命名NewsTableViewCell和这个类的实例希望用数据来填充像usrNameusrDescription...

将类方法添加到NewsTableViewCell

+ (CGFloat)cellHeightNeededForUsrName:(NSString *)usrName
                       usrDescription:(NSString *)usrDescription {
  // calculate the height here
}

甚至更好:

+ (CGFloat)cellHeightNeededForData:(PFObject *)data {
  // calculate the height here
}

然后- (CGFloat)tableView:heightForRowAtIndexPath:以这种方式修改您的内容

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    PFObject *object = [self.objects objectAtIndex:indexPath.row];

    return [NewsTableViewCell cellHeightNeededForData:object];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

UITableview heightForRowAtIndexPath:重新加载单元格中的标签

来自分类Dev

重新加载UITableview不会重新加载单元格中的图像

来自分类Dev

UITableView动态单元格高度-单行的重新加载高度

来自分类Dev

UITableView中重新排序的单元格保持相同顺序

来自分类Dev

仅加载UITableView中的可见单元格

来自分类Dev

在UITableView中加载单元格

来自分类Dev

如何从uitableview单元格中删除单元格

来自分类Dev

如何重用UITableView中的单元格?

来自分类Dev

在UItableView单元格中适合文本

来自分类Dev

在UITableView中编程静态单元格

来自分类Dev

在UITableView单元格中隐藏“>”

来自分类Dev

UITableView中缺少单元格

来自分类Dev

UITableView静态单元格中的IBOutlets

来自分类Dev

在 UITableView 中重用单元格

来自分类Dev

每个 UICollectionView 单元格中的 UITableView

来自分类Dev

iOS-[UITableView reloadData]重新加载,但不删除旧单元格吗?

来自分类Dev

由FetchedResultsController和UITableViewAutomaticDimension支持的UITableView-重新加载表格时单元格移动

来自分类Dev

UITableView在加载后按编号重新排列单元格

来自分类Dev

在UITableView(swift2)中选择单元格时更新/重新加载ViewController

来自分类Dev

UITableView加载缓慢并反复加载单元格

来自分类Dev

UITableView加载缓慢并反复加载单元格

来自分类Dev

在特定单元格的标签中显示按钮单击计数,这些单元格是uitableview的子视图

来自分类Dev

UITableView单元格重叠

来自分类Dev

隐藏UITableview单元格

来自分类Dev

UITableView单元格选择

来自分类Dev

Swift-重新排序UITableView单元格

来自分类Dev

UITableView 单元格图标和标签错位

来自分类Dev

单击 UITableView 中的标签时返回的 tablew 视图单元格中的 IndexPath 是错误的

来自分类Dev

在UITableView或UICollectionView上加载与可见单元格

Related 相关文章

  1. 1

    UITableview heightForRowAtIndexPath:重新加载单元格中的标签

  2. 2

    重新加载UITableview不会重新加载单元格中的图像

  3. 3

    UITableView动态单元格高度-单行的重新加载高度

  4. 4

    UITableView中重新排序的单元格保持相同顺序

  5. 5

    仅加载UITableView中的可见单元格

  6. 6

    在UITableView中加载单元格

  7. 7

    如何从uitableview单元格中删除单元格

  8. 8

    如何重用UITableView中的单元格?

  9. 9

    在UItableView单元格中适合文本

  10. 10

    在UITableView中编程静态单元格

  11. 11

    在UITableView单元格中隐藏“>”

  12. 12

    UITableView中缺少单元格

  13. 13

    UITableView静态单元格中的IBOutlets

  14. 14

    在 UITableView 中重用单元格

  15. 15

    每个 UICollectionView 单元格中的 UITableView

  16. 16

    iOS-[UITableView reloadData]重新加载,但不删除旧单元格吗?

  17. 17

    由FetchedResultsController和UITableViewAutomaticDimension支持的UITableView-重新加载表格时单元格移动

  18. 18

    UITableView在加载后按编号重新排列单元格

  19. 19

    在UITableView(swift2)中选择单元格时更新/重新加载ViewController

  20. 20

    UITableView加载缓慢并反复加载单元格

  21. 21

    UITableView加载缓慢并反复加载单元格

  22. 22

    在特定单元格的标签中显示按钮单击计数,这些单元格是uitableview的子视图

  23. 23

    UITableView单元格重叠

  24. 24

    隐藏UITableview单元格

  25. 25

    UITableView单元格选择

  26. 26

    Swift-重新排序UITableView单元格

  27. 27

    UITableView 单元格图标和标签错位

  28. 28

    单击 UITableView 中的标签时返回的 tablew 视图单元格中的 IndexPath 是错误的

  29. 29

    在UITableView或UICollectionView上加载与可见单元格

热门标签

归档