1

我想为我的 TableView Cell 实现类似的功能。
我需要为单元格提供不同的背景颜色。
当我们触摸单元格时给出不同的背景,当我们触摸时给出不同的颜色。

我用以下方式尝试:

 - (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath
 {
     [cell setBackgroundColor:[UIColor redColor]];   
 }

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   [cell setBackgroundColor:[UIColor greenColor]]; 
}

但问题是didHighlightRowAtIndexPath仅适用于iOS 6.0不低于此。

有没有另一种方法来实现它。

4

2 回答 2

1

cellForRowAtIndexPath写下面的代码:

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

    static NSString *CustomCellIdentifier = @"yourcell";

    SettingsCell *cell = (SettingsCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier];
    if (cell == nil) {

        NSArray *nib = nib = [[NSBundle mainBundle] loadNibNamed:@"yourcell" owner:self options:nil];


        for(id oneObject in nib) {
            if([oneObject isKindOfClass:[yourCell class]]) {
                cell = (yourCell *)oneObject;
            }
        }

        //to change background color of selected cell
        UIView *backgroundView          = [[UIView alloc] init];
        backgroundView.backgroundColor  = [UIColor blueColor];
        cell.selectedBackgroundView     = backgroundView;

    }

    return cell;
}

在 indexPath 的 didselectRow 上,更改为另一种颜色

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{    
    [tableView reloadData];
    UITableViewCell *cell=(UITableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    [cell setBackgroundColor:[UIColor redColor]];
}
于 2013-04-04T09:07:20.030 回答
0

试试这个,你可以有两个图像用于选定和未选定的行。

cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"unselected.png"] ];

cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage  imageNamed:@"selected.png"] ];

您将在 cellForRowAtIndexPath 方法中添加它。您可以从 didSelect 获取状态,对吗?相信我,我已经尝试了近 10 种不同的方法来做到这一点,只有这个解决方案在所有情况下都能完美运行。

于 2013-04-04T09:06:02.417 回答