1

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

在此处输入图像描述

我知道如何为选择单元格/行设置背景颜色

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

如果是的话,有没有可能有什么解决方案

4

3 回答 3

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];
   }
 }
于 2013-01-10T12:06:13.260 回答
1

didSelectRowAtIndexPath从tableview 的委托传递节值并在cellForRowAtIndexPathdataSource 方法中更改单元格的背景颜色UITableview

在头文件中

NSUInteger index;

在实施文件 (.m)

-(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];

}
于 2013-01-10T12:39:42.227 回答
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;
    }
}
于 2013-01-10T12:37:14.153 回答