带有 UIScrollView 的 UITableViewCell 导致其他单元格的内容消失

Posted

技术标签:

【中文标题】带有 UIScrollView 的 UITableViewCell 导致其他单元格的内容消失【英文标题】:UITableViewCell with UIScrollView cause content of other cells disappearing 【发布时间】:2014-03-11 09:01:57 【问题描述】:

我几乎在所有地方都试图找到解决方案,但我没有找到。所以,这是我的问题。

我有带有自定义 UITableViewCells 的 UITableView。

    第一个单元格的内容视图中有 UIScrollView。 第二个单元格在其内容视图中包含 UILables 和其他基本视图。

所以,如果第一个单元格中有 UIScrollView,第二个单元格的内容就会消失。只有当第一个单元格滚动出 tableView 框架时才会出现。

谁能帮我解决?谢谢。

代码预览

#pragma mark - UITableView Data Source

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    if ([indexPath isEqual:_photosIndexPath]) 
        static NSString *PhotosCellIdentifier = @"AdDetailsPhotosCell";
        BazarAdDetailPhotosCell *cell = [tableView dequeueReusableCellWithIdentifier:PhotosCellIdentifier];
        if (!cell) 
            cell = [[BazarAdDetailPhotosCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:PhotosCellIdentifier];
        
        cell.photoScrollView.scrollsToTop = NO;
        cell.photoScrollView.delegate = cell;

        [cell setPhotos:_adDetail.photos];

        return cell;
    
    else if ([indexPath isEqual:_adDetailsPath]) 
        static NSString *DetailsCellIdentifier = @"AdDetailsDetailCell";
        BazarAdDetailsDetailCell *cell = [tableView dequeueReusableCellWithIdentifier:DetailsCellIdentifier];
        if (!cell) 
            cell = [[BazarAdDetailsDetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:DetailsCellIdentifier];
        

        cell.adTitleLabel.text = _adDetail.title;
        cell.priceLabel.text = _adDetail.price;
        // this cell content disappears
    

【问题讨论】:

请分享一些你尝试过的代码 看起来您有两个不同的UITableViewCells,并且您在滚动时覆盖了其中一个。但是如果不分享你的UITableViewDelegatescellForRowAtIndexPath: 或者你的笔尖的截图和你的UITableViewCells 的连接,我们就帮不了你 如果是 ios7 唯一问题,可能是因为 UiScrollView 的 automaticallyAdjustsScrollViewInsets 属性默认为 NO。将其设置为是并检查。 我添加了一些代码和图片。 它昨天工作了,但是当我更新到 iOS 7.1 时,这开始发生了。 automaticallyAdjustsScrollViewInsets 不起作用。 【参考方案1】:

iOS 7.1 上的单元格绘图可能有问题,根据iOS 7.1 beta5 tableviewcell height showing objects outside it's range 上的回答,尝试剪辑子视图:

cell.clipsToBounds = YES;

【讨论】:

【参考方案2】:

试试看

  #pragma mark - UITableView Data Source

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    if ([indexPath isEqual:_photosIndexPath]) 

        static NSString *PhotosCellIdentifier = @"AdDetailsPhotosCell";
        BazarAdDetailPhotosCell *cell = [tableView dequeueReusableCellWithIdentifier:PhotosCellIdentifier];
        if (!cell) 
            cell = [[BazarAdDetailPhotosCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:PhotosCellIdentifier];
        
        cell.photoScrollView.scrollsToTop = NO;
        cell.photoScrollView.delegate = cell;

        [cell setPhotos:_adDetail.photos];

        return cell;
    
    else  
        static NSString *DetailsCellIdentifier = @"AdDetailsDetailCell";
        BazarAdDetailsDetailCell *cell = [tableView dequeueReusableCellWithIdentifier:DetailsCellIdentifier];
        if (!cell) 
            cell = [[BazarAdDetailsDetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:DetailsCellIdentifier];
        

        cell.adTitleLabel.text = _adDetail.title;
        cell.priceLabel.text = _adDetail.price;
        // this cell content disappears
 return cell;
    

【讨论】:

不起作用。我试图在第二个单元格中插入一些内容,但也消失了。 内容仍然消失。这很奇怪。 _adDetail 它的数组或字典或对象您如何获取 uitableview 单元格的数据。UiTAble 滚动时间重新加载您必须使用数组或字典或数组计数对象维护的数据对于两个单元格必须相同跨度> _adDetail 是所有单元格的对象。每个单元格只显示来自该对象的不同数据。

以上是关于带有 UIScrollView 的 UITableViewCell 导致其他单元格的内容消失的主要内容,如果未能解决你的问题,请参考以下文章

UITable 视图项有时会在选择时消失(取决于屏幕大小)

UITable 视图界面构建器创建

如何将文本包装在 Iphone 的 UITable 单元格中?

如何检测scrollView的滚动方向?

带有图像的 UIScrollView

将 UITable 行号从大到小反转(...5,4,3,2,1)