首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用heightForRowAtIndexPath太早

调用heightForRowAtIndexPath太早
EN

Stack Overflow用户
提问于 2013-06-02 04:58:29
回答 2查看 1.4K关注 0票数 2

我目前正在通过Json获取Twitter feed,在我可以获取tweet的长度之前,heightForRowAtIndexPath已经被调用了。因此,当heightForRowAtIndexPath加载时,fullTweet.length始终为零。我正在尝试像这样调整单元格的大小,这样我就不会浪费任何额外的空格。

代码语言:javascript
复制
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(fullTweet.length >= 50) {
  return 50.0f;
      } else
  return 92.0f;
}

我的方法是如何工作的

代码语言:javascript
复制
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"TweetCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSDictionary *tweet = [tweets objectAtIndex:indexPath.row];

NSString *text = [tweet objectForKey:@"text"];
cell.textLabel.text = text;
fullTweet = text;
NSLog(@"%i", fullTweet.length);
cell.textLabel.numberOfLines = 3;

return cell;
}

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-02 05:06:22

您似乎尝试使用实例变量fullTweet将单元格的文本从cellForRowAtIndexPath传递给heightForRowAtIndexPath

这是行不通的,因为首先为所有单元格调用heightForRowAtIndexPath,然后为可见单元格调用cellForRowAtIndexPath

因此,heightForRowAtIndexPath应该从数据源中获取信息,例如:

代码语言:javascript
复制
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSDictionary *tweet = [tweets objectAtIndex:indexPath.row];
    NSString *text = [tweet objectForKey:@"text"];
    if ([text length] <= 50) {
        return 50.0f;
    } else {
        return 92.0f;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2013-06-02 05:06:21

当您收到数据时,只需在UITableView上调用reloadData即可。这将强制表格视图重新加载所有单元格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16877189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档