2014-02-20 67 views
0
- (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从两个地方。一个是从viewDidLoad调用的loadInitialData函数的结尾。self.tableView reloadData不工作,以垂直居中我的标签文本

第二个从viewDidAppear被调用,虽然这对我的问题是无关紧要的,因为它存在于它之前并且没有它。

我最初加载3行样本数据,标题和字幕。现在,当这个窗口第一次启动时,我的字幕文本会垂直居中。如果我抓住桌子并滚动高度,突然间,我的[cell.subtitle sizeToFit]开始起作用,并且我的文字垂直向上,这是所需的。

所以我的问题是...为什么文本垂直居中从一开始? reloadData也不起作用。当我从添加新行返回时,除了新添加的行之外,所有行都按照它们应该垂直对齐的方式排在最前面。新行错误地垂直居中。

为什么不能正常工作?一切似乎都很好。新数据被添加等通过NSLog声明,我已经验证numberOfRowsInSection是在调用reloadData后立即调用。

那么,为什么文本垂直顶部对齐不起作用?

谢谢!

回答

0

这可能是因为UITableViewCell尚未铺设,所以它还没有尺寸。尝试做这个UITableViewDelegate方法sizeToFit

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

我不知道这会工作,但它值得一试。

+0

谢谢斯蒂芬。我应该提到我也尝试过这种方法,但它也没有解决我的问题。我真的很难过这个。 –

+0

查看单元格和contentView的框架,以查看它们是否在初始调用cellForRowAtIndexPath时的大小正确。 –

0

在您返回单元格之前添加[cell setNeedsLayout];,以便在演示文稿之前对单元格进行布局。

+0

我在返回单元格之前尝试了这一点,并且还设置了需要显示,无济于事。 –