Ios UITableView内容问题中的UIScrollView

Ios UITableView内容问题中的UIScrollView,ios,uitableview,uiscrollview,Ios,Uitableview,Uiscrollview,我在tableview的每个单元格中都有一个滚动视图,尽管嵌入在滚动视图中的图片只有在我上下滚动tableview时才会显示。。。 我有一个自定义类,它的scrollview和单元格都有@property。我有在cellForRowAtIndexPath:方法中设置scrollview的代码。这也应该在最初创建细胞时调用?我很困惑 当我启动应用程序时,如何解决这个问题并使图像在第一时间出现 相关代码: - (UITableViewCell *)tableView:(UITableView *)t

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

当我启动应用程序时,如何解决这个问题并使图像在第一时间出现

相关代码:

- (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;
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
静态NSString*cellID=@“CustomID”;
CustomCell*cell=[tableView dequeueReusableCellWithIdentifier:cellID];
如果(单元格==nil){
cell=[[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault重用标识符:cellID];
}
对于(int i=0;i<[imageArray计数];i++){
CGRect帧;
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 ImageName:[imageArray objectAtIndex:i]];
[cell.scrollView addSubview:imageView];
}
cell.scrollView.contentSize=CGSizeMake(cell.scrollView.frame.size.width*[imageArray count],cell.scrollView.frame.size.height);
返回单元;
}

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

别忘了你的细胞会被重复使用。重用后(假设用户向下滚动,一个单元格从屏幕上移走,下一个出现在底部的单元格将是刚刚消失并被重用的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之前。
(我以为有一种方法可以一次删除所有子视图,但没有找到它)

对不起,你的问题是什么?你在哪里实例化滚动视图?您是否在IB/Storyboard Editor中设计了
CustomCell
?单元格和滚动视图的默认大小是多少?帧是否等于
CGRectZero
?这取决于您创建它的位置和方式。如果不设置任何帧,则该帧为零。但这不太可能。那么它们是在哪里创建的,又是如何创建的呢?IB?以编程方式在单元格的init/initWithStyle:方法中?您应该在CustomCell中添加imageView作为属性。以initWithStyle分配它。然后您将只在cellForRowAtIndexPath中添加图像。在这种情况下,我认为他应该从
单元格.scrollView.subviews
中删除子视图。请注意,如果从UIScrollView中删除所有子视图,滚动指示器也将被删除。您需要进行某种检查(基于标记或类),以便只从scrollview中删除内容。