表格内的动态大小标签未在ios中刷新

时间:2013-11-15 10:21:52

标签: ios uitableview uilabel

我的表格包含多个标签。我希望其中一个标签符合其大小,因此文本从标题下方开始(请记住标签垂直对齐文本,除非您适合其容器)。

My cell

问题是,第一次加载表时,所有标签的文本都已成功填充,但标签大小实际上不会以图形方式应用,直到询问刷新的NEXT时间。 (如果我要求一个具有完全相同信息的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;
}

1 个答案:

答案 0 :(得分:2)

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

我猜测自动布局覆盖了我正在应用的布局更改,因此在下次重新加载数据之前它们没有任何效果。