2

我目前正在通过 Json 获取 Twitter 提要,并且在获取推文长度之前调用了 heightForRowAtIndexPath。因此,加载 heightForRowAtIndexPath 时 fullTweet.length 始终为零。我正在尝试像这样http://gyazo.com/632d09685268e1737d3c58bf1718cbff.png调整单元格的大小,所以我不会浪费任何额外的空格。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(fullTweet.length >= 50) {
  return 50.0f;
      } else
  return 92.0f;
}

我的方法是如何工作的

- (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;
}

有任何想法吗 ?

4

2 回答 2

1

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

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

所以heightForRowAtIndexPath应该从数据源获取信息,比如:

- (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;
    }
}
于 2013-06-01T21:06:21.897 回答
0

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

于 2013-06-01T21:06:21.280 回答