0

我的表格视图中的每个单元格内都有一个滚动视图,尽管在我上下滚动表格视图之前不会显示嵌入在我的滚动视图中的图片...我有一个自定义类,其中滚动视图和单元格的@property。我有在 cellForRowAtIndexPath: 方法中设置滚动视图的代码。这也应该在最初创建单元格时调用?我很困惑。

当我启动应用程序时,我怎样才能摆脱这个问题并让图像首先出现?

相关代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellID = @"CustomID";

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

    if (cell == nil) {
        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }

    for (int i = 0; i < [imageArray count]; i++) {
        CGRect frame;
        frame.origin.x = cell.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = cell.scrollView.frame.size;

        UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
        imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:i]];
        [cell.scrollView addSubview:imageView];
    }

    cell.scrollView.contentSize = CGSizeMake(cell.scrollView.frame.size.width * [imageArray count], cell.scrollView.frame.size.height);

    return cell;
}
4

1 回答 1

1

这与您的问题并不完全相关,但您也会遇到此问题:

不要忘记您的细胞将被重复使用。重用时(假设用户向下滚动,一个单元格从屏幕上向上移动,出现在底部的下一个将是刚刚消失并被重用的 CustomCell 实例。)

因此添加:

   for (UIView *aView in [NSArray arrayWithArray:cell.subviews]) {
       [aView removeFromSuperview];
       // if you don't arc then release them and take care of their subviews - if any. 
   }

在添加任何新的 UIImageView 之前。(我以为有一种方法可以一次性删除所有子视图但没有找到)

于 2013-07-28T09:35:50.513 回答