【问题标题】:Dynamic sized labels inside a table not refreshing in ios表格内的动态大小标签在ios中不刷新
【发布时间】:2013-11-28 17:02:15
【问题描述】:

我的表格有多个标签的单元格。我希望这些标签之一适合其大小,以便文本在标题下方开始(请记住,标签垂直对齐文本,除非您适合其容器)。

问题是,第一次加载表格时,所有标签的文本都已成功填充,但标签大小实际上不会以图形方式应用,直到下一次要求刷新时。 (如果我要求 reloadData 具有完全相同的信息,标签的大小可以完美地工作)。

这是我的一些 cellForRowAtIndexPath 代码:

cell.body.text = user.message;
[cell.body sizeToFit];

到目前为止,我发现的唯一解决方案是双重调用 [table reloadData],但这是一个丑陋的解决方案。有什么办法可以解决这个问题?

编辑:以前的代码是一个摘要,我将根据要求在此处显示整个代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    TwitterTweetCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TwitterTweetCell"];

    // Populate cell

    TweetModelData *tweet = [self.twitterModelData.tweets objectAtIndex:[indexPath item]];

    cell.tweetName.text = tweet.user;
    cell.tweetChannel.text = tweet.userName;

    cell.tweetBody.text = tweet.message;
    [cell.tweetBody sizeToFit];

    return cell;
}

关于单元格大小,一切正常。根据消息的大小,每个单元格都有不同的大小,这是之前预先计算好的。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return ((TweetModelData *)[self.twitterModelData.tweets objectAtIndex:[indexPath item]]).tweetHeight + 30.0f;
}

【问题讨论】:

  • 显示完整的cellForRowAtIndexPath 代码(表示标签创建和赋值)。
  • @Erik 完整代码添加
  • 你必须使用这个方法设置单元格行的高度: - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath of tableview
  • @DhavalBhadania 是的,我已经实现了,单元格大小工作正常。反正我加了,谢谢你的时间

标签: ios uitableview uilabel


【解决方案1】:

我终于找到了。不知道原因,但似乎在我的故事板上禁用“使用自动布局”修复了它。

我猜自动布局会覆盖我正在应用的布局更改,因此它们在下一次数据重新加载之前无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 2023-03-18
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多