UITableView中的颜色交替UITableViewCell?

时间:2015-05-28 11:30:25

标签: ios uitableview swift uibackgroundcolor

我试图使用此代码link to color cell在表格视图中为替换tableCell着色:

func colorForIndex(index: Int) -> UIColor 
{

    let itemCount = stnRepos.count - 1
    let color = (CGFloat(index) / CGFloat(itemCount)) * 0.6
    return UIColor(red: 0.80, green: color, blue: 0.0, alpha: 1.0)
}

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath) 
{
        var count = stnRepos.count
        for (var i = 0; i<=count; i++)
        {
            if (i % 2 == 0)
            {
                cell.backgroundColor = colorForIndex(indexPath.row)
                println(i)
            }
        }
}

但最终将所有单元格着色,如链接所示。

5 个答案:

答案 0 :(得分:11)

我不确定我是否理解你要做的事情,但是,下面的代码只是颜色(使用你的函数)偶数单元格和白色涂料奇怪的代码

func colorForIndex(index: Int) -> UIColor 
{
    let itemCount = stnRepos.count - 1
    let color = (CGFloat(index) / CGFloat(itemCount)) * 0.6
    return UIColor(red: 0.80, green: color, blue: 0.0, alpha: 1.0)
}

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath) 
{        
    if (indexPath.row % 2 == 0)
    {
        cell.backgroundColor = colorForIndex(indexPath.row)
    } else {
        cell.backgroundColor = UIColor.whiteColor()()
    }
}

ps,代码没有任何出列,并且来自单元格的需要和网格只是例证了绘制偶数单元格而绘制奇数单元格的逻辑。我希望能帮到你

答案 1 :(得分:1)

您的代码存在的问题是您有一个单元格,您要着色stnRepos.count次。您应该将代码更改为以下内容:

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath) 
{
    if (indexPath.row % 2 == 0)
    {
        cell.backgroundColor = colorForIndex(indexPath.row)
    }
    else
    {
        cell.backgroundColor = UIColor.whiteColor()
    }
}

修改:@IcaroNZ提到的else案例,即使单元格已经出列,也能保持预期的行为

答案 2 :(得分:1)

只是为了确定...

您是否尝试设置tableview样式,以便奇数行具有一种背景颜色,甚至行还有另一种颜色?

如果是这种情况,那么也许这可以帮到你:

Change color of alternate row in UITableView for iPhone SDK

关于你的代码及其行为的原因......

- tableView:willDisplayCell:forTableColumn:row:

会在tableview中的每一行调用一次,就在它即将显示之前。

在每个调用中,你遍历整个数组,如果i的当前值是偶数,则为表格单元格的背景着色,这意味着当我为0时,你为背景着色,当我为2时你做同样的事情,你为每一行做这个...这可能不是你感兴趣的: - )

正如Peter Tutervai建议的那样,你应该检查tableColumn是奇数还是偶数并按行动

答案 3 :(得分:0)

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath) 
   {        
 if (indexPath.row % 2 == 0)
 {
     cell.backgroundColor = UIColor.gray
 } else {
    cell.backgroundColor = UIColor.white
 }

}

答案 4 :(得分:0)

尝试更改

cell.backgroundColor = colorForIndex(indexPath.row)

cell.contentView.backgroundColor = colorForIndex(indexPath.row)