【问题标题】:UIScrollView in UITableView content problemsUITableView 中的 UIScrollView 内容问题
【发布时间】:2013-07-28 09:24:36
【问题描述】:

我的表格视图的每个单元格内都有一个滚动视图,尽管在我上下滚动表格视图之前,嵌入在我的滚动视图中的图片不会显示... 我有一个带有滚动视图和单元格的@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;
}

【问题讨论】:

  • 抱歉,您有什么问题?
  • 你在哪里实例化滚动视图?您是否在 IB/Storyboard Editor 中设计了 CustomCell
  • 单元格和滚动视图的默认大小是多少 - 框架是否等于CGRectZero
  • 这取决于您创建它的位置和方式。如果你没有设置任何框架而不是 CGRectZero。但这不太可能。那么它们是在哪里以及如何创建的?国际文凭组织?以编程方式在单元格的 init/initWithStyle: 方法中?
  • 您应该在 CustomCell 中添加 imageView 作为属性。在 initWithStyle 中分配它。然后您将仅在 cellForRowAtIndexPath 中添加图像。

标签: ios uitableview uiscrollview


【解决方案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 之前。 (我以为有一种方法可以一次性删除所有子视图但没有找到)

【讨论】:

  • 在这种情况下,我认为他应该从cell.scrollView.subviews 中删除子视图。请注意,如果您从 UIScrollView 中删除所有子视图,滚动指示器也将被删除。您需要进行某种检查(基于标签或类),以便您只能从滚动视图中删除您的内容。
猜你喜欢
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多