在每个 UITableViewCell 中显示备用视图 - iOS

Posted

技术标签:

【中文标题】在每个 UITableViewCell 中显示备用视图 - iOS【英文标题】:Show alternate views in each UITableViewCell - iOS 【发布时间】:2016-01-17 09:10:43 【问题描述】:

我的UITableViewCell 中有 2 个视图,我想在每个单元格中显示备用视图(如果前一个单元格的右视图打开,那么下一个单元格的左视图将打开)。

我已经成功实现了它,但是在滚动表格视图时,交替视图无法正常工作;下图示例:

我的代码是:

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

    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"LiveStreamCell" forIndexPath:indexPath];
    
    if(cell == nil)
    
        cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"LiveStreamCell"];
    

    
    UIView *leftView = (UIView*)[cell viewWithTag:999];
    UIView *rightView = (UIView*)[cell viewWithTag:998];

    UIImageView *mediaImage;
    mediaImage.clipsToBounds = YES;
    
    UILabel *artistLabel;
    UILabel *titleLabel;
    UILabel *statusLabel;
    
    if (isViewOnLeft) 
    
        isViewOnLeft = NO;
        
        rightView.hidden = NO;
        leftView.hidden = YES;
        
        mediaImage = (UIImageView *)[cell viewWithTag:221];
        
        CALayer *cellImageLayer = mediaImage.layer;
        [cellImageLayer setCornerRadius:74];
        [cellImageLayer setMasksToBounds:YES];
        
        artistLabel = (UILabel *)[cell.contentView viewWithTag:222];
        titleLabel = (UILabel *)[cell.contentView viewWithTag:223];
        statusLabel = (UILabel *)[cell.contentView viewWithTag:224];
        
        
    
    else 
        
        isViewOnLeft = YES;
        
        leftView.hidden = NO;
        rightView.hidden = YES;
        
        mediaImage = (UIImageView *)[cell viewWithTag:121];
        
        CALayer *cellImageLayer = mediaImage.layer;
        [cellImageLayer setCornerRadius:74];
        [cellImageLayer setMasksToBounds:YES];
        
        artistLabel = (UILabel *)[cell.contentView viewWithTag:122];
        titleLabel = (UILabel *)[cell.contentView viewWithTag:123];
        statusLabel = (UILabel *)[cell.contentView viewWithTag:124];  
    

   /*Here I'm setting image (come from web URLs) and labels data*/

故事板截图:

我知道问题在于细胞的可重用性,但我搜索了很多但没有运气。请提出解决方案。

谢谢!

【问题讨论】:

我没有什么要补充的,但我只想说,您创建的 UI 是制作时间线的一种很酷的方式。不错的工作! :D 【参考方案1】:

您可以改为创建两个表格视图单元格,并基于 indexPath,如果其奇数或偶数加载左侧或右侧单元格。 假设你有奇怪的加载左侧图像视图。

这样,您只需更改获取单元格的代码。其余部分保持不变。

【讨论】:

我想我明白你在说什么。我是否需要在情节提要中创建 2 个原型单元格(具有唯一标识符),第一个单元格中有左视图,第二个单元格中有右视图? 是的,这就是我需要做的!谢谢! :D

以上是关于在每个 UITableViewCell 中显示备用视图 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 在自定义单元格中具有备用背景颜色

如何在每个 UITableViewCell 中分配不同的 UIImage?

确保每个自定义 UITableViewCell 调整单元格高度?

在每个 UITableViewCell 单元格中添加每次出现的键

在每个UITableViewCell单元格中添加键的每个出现

UIimageview 在 uitableviewcell 中显示不止一次