我目前正在通过Json获取Twitter feed并且在我获得推文的长度之前调用了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;
}
有什么想法吗?
答案 0 :(得分:1)
您似乎尝试使用实例变量cellForRowAtIndexPath
将单元格的文本从heightForRowAtIndexPath
传递到fullTweet
。
这不起作用,因为首先为所有单元格调用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;
}
}
答案 1 :(得分:0)
收到数据后,只需致电UITableView
上的reloadData
即可。这将强制表视图重新加载所有单元格。