如何在uitableview中为整个部分设置选择backGround

时间:2013-01-10 11:58:27

标签: iphone objective-c uitableview

我有一个包含多个部分的表视图,如下所示..

enter image description here

我知道如何为选择单元格/行

设置背景颜色

但是我需要将选择填充到整个部分而不是单个单元格选择

是否有可能是否有任何解决方案

3 个答案:

答案 0 :(得分:2)

我希望它的工作......

 - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
     NSIndexPath *currentSelectedIndexPath = [tableView indexPathForSelectedRow];
     if (currentSelectedIndexPath != nil)
     {
        [[tableView cellForRowAtIndexPath:currentSelectedIndexPath] setBackgroundColor:NotSelectedCellBGColor];
     }

     return indexPath;
 }

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
     [[tableView cellForRowAtIndexPath:indexPath] setBackgroundColor:SelectedCellBGColor];
  }

 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
 {
   if (cell.isSelected == YES)
   {
       [cell setBackgroundColor:SelectedCellBGColor];
   }
   else
   {
       [cell setBackgroundColor:setBackgroundColor:NotSelectedCellBGColor];
   }
 }

答案 1 :(得分:1)

从tableview的didSelectRowAtIndexPath委托中传递部分值,并使用cellForRowAtIndexPath UITableview

NSUInteger index; dataSource方法更改单元格的背景颜色

在头文件

-(void) viewDidLoad{
index=-1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CELL_IDENTIFIER";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


    }

        if (indexPath.section==index) {
            cell.contentView.backgroundColor=[UIColor yellowColor];
        }
        else{
            cell.contentView.backgroundColor=[UIColor clearColor];
        }
       cell.textLabel.text=[NSString stringWithFormat:@"Row %d Section %d",indexPath.row,indexPath.section];
       return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    index=indexPath.section;
    [tableView reloadData];

}

在实施文件(.m)

{{1}}

答案 2 :(得分:0)

·H

int currentSection;

的.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    currentSection = indexPath.section;
    [tableView reloadData];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ( currentSection == indexPath.section ) {
        cell.backgroundColor = SelectedColor;
    } else {
        cell.backgroundColor = OtherColor;
    }
}