- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil)
cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
Movie *movie = [self.movies objectAtIndex:indexPath.row];
cell.title.text = movie.title;
cell.subtitle.text = movie.subtitle;
cell.subtitle.numberOfLines = 0;
[cell.subtitle sizeToFit];
return cell;
}
我从两个地方打电话给reloadData
。一个是loadInitialData
函数的末尾,它是从viewDidLoad
调用的。
第二个是从viewDidAppear
调用的,虽然这对我的问题无关紧要,因为它存在于它之前并且没有它存在。
我最初加载3行样本数据,包括标题和副标题。现在发生的事情是,当这个窗口首次启动时,我的字幕文本是垂直居中的。如果我抓住桌子并且滚动高,突然我的[cell.subtitle sizeToFit]
开始行动,我的文字垂直向上移动,这是所希望的。
所以我的问题是......为什么文本从一开始就垂直居中? reloadData
也不起作用。当我从添加新行返回时,除了新添加的行之外的所有行都垂直对齐到顶部。新行不正确地垂直居中。
为什么这不起作用?一切似乎都很好。添加了新数据等。通过NSLog
语句,我已在numberOfRowsInSection
被调用后立即调用reloadData
。
那么为什么垂直对齐顶部的文本不起作用?
谢谢!
答案 0 :(得分:0)
这可能是因为UITableViewCell尚未布局,因此它还没有尺寸。尝试在此UITableViewDelegate方法中执行sizeToFit
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
我不确定这会有效,但值得尝试。
答案 1 :(得分:0)
在返回单元格之前添加[cell setNeedsLayout];
,以便在演示之前布置单元格。