13

在我的应用程序中,我想在 iPad 中显示多列 tableView。

所以,我使用了一个可可控件:MultiColumn TableView

它对我来说很好,但我想以交替颜色显示行。

为此,我无法找到更改代码的位置。

4

13 回答 13

45
- (void)tableView: (UITableView*)tableView willDisplayCell: (UITableViewCell*)cell forRowAtIndexPath: (NSIndexPath*)indexPath
{
 
        if(indexPath.row % 2 == 0)
              cell.backgroundColor = [UIColor redColor];
        else
              cell.backgroundColor = [UIColor whiteColor];
}
于 2013-03-19T11:09:49.977 回答
9

使用 indexPath 中的 cellForRowAtIndexPath来获得所需的结果。

    if( [indexPath row] % 2){
          cell.backgroundColor=[UIColor whiteColor];
    } 
    else{
          cell.backgroundColor=[UIColor purpleColor];
    }

您将在实现的类中拥有此委托方法UITableViewDelegate

于 2013-03-19T11:05:16.033 回答
6
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    .......

    if (indexPath.row % 2 == 0) {
       cell.backgroundColor = [UIColor lightGrayColor];
    }
    else
    {
        cell.backgroundColor = [UIColor darkGrayColor];
    }
    .......

    return cell;
}
于 2013-03-19T11:05:43.557 回答
5

首先,您需要获取每行的模数。

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

    if (indexPath.row % 2 == 0) {
       cell.backgroundColor = [UIColor lightGrayColor];
    }
    else
    {
        cell.backgroundColor = [UIColor darkGrayColor];
    }
    ....


    return cell;
}
于 2013-03-19T11:20:40.913 回答
3

任何试图快速做到这一点的人都是我的代码。小巧玲珑。

这个技巧甚至适用于我不使用 cellForRowAtIndexPath 方法的静态单元格。

抱歉回答太少了。希望您了解数据源和代表。

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

    }

 }

它会给你这样的结果......

使用 Swift 为 ios 中的每个备用单元格着色

于 2015-10-13T10:53:42.800 回答
2
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

 
static NSString *CellIdentifier = @"Cell";
    
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
    if(indexPath.row%2==0)
        cell.contentView. backgroundColor=[UIColor redColor];
    else
        cell.contentView.backgroundColor=[UIColor greenColor];

        


return cell;


}
于 2013-03-19T11:05:13.800 回答
1

在您的代码中搜索 cellForRowAtIndexPath。该方法负责在您的表格视图中创建单元格。更多信息:UITableViewCell 在自定义单元格中具有备用背景颜色

于 2013-03-19T11:03:41.403 回答
1

在您的 cellForRow 方法中,您应该检查 indexPath.row 是否可被 2 整除分配第一种颜色,否则分配第二种颜色并返回结果单元格

于 2013-03-19T11:04:40.257 回答
1
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()()
    }
}
于 2016-02-11T07:28:21.313 回答
1

对于Swift 3 + 并且不透明度降低:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

        if(indexPath.row % 2 == 0) {
            cell.backgroundColor = UIColor.red.withAlphaComponent(0.05)
        } else {
            cell.backgroundColor = UIColor.white
        }
}
于 2017-10-26T19:45:29.263 回答
1

在这样一个简单的例子中,我会选择三元运算符。我只是讨厌看到 cell.backgroundColor 重复。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

.
.
.
    cell.backgroundColor = indexPath.row % 2 == 0 ? UIColor.red.withAlphaComponent(0.05) : .white
.
.
.
}
于 2018-11-27T23:04:33.797 回答
0

您可以运行一个循环,它将索引 path.row 增加 2,然后在该循​​环的主体中您可以分配颜色。,

于 2013-03-19T11:03:24.510 回答
0

这是 Swift 4.x 及更高版本的工作代码

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if(indexPath.row % 2 == 0) {
        cell.backgroundColor = UIColor.white
    } else {
        cell.backgroundColor =  UIColor.lightGray
    }
}
于 2019-05-13T07:33:15.890 回答