我的tableview中的每个单元格内都有一个scrollview,虽然我滚动查看桌面视图时,我的滚动视图中嵌入的图片不显示... 我有一个自定义类,其中包含用于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;
}
答案 0 :(得分: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之前。 (我认为有一种方法可以一次性删除所有子视图,但没有找到它)