当我们在ios中点击它时,我们如何更改表格列表标题颜色

时间:2015-10-10 07:46:28

标签: ios objective-c

嗨,我是Ios的初学者,在我的项目中,我已经在桌面列表单元格中添加了一些标签和图像,确定他们已添加,所以一切都很好

这里我的主要要求是,当我们点击表格列表单元格标签时,颜色必须更改,图像需要更改,如下图所示

为此我已经写了一些代码,但那不是工作请求帮助我

我的代码: -

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

    NSString *cells=@"cell";
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cells];

    if (cell==nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cells];
    }

    strip = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 7, cell.frame.size.height)];
    strip.backgroundColor = [UIColor orangeColor];
    [cell.contentView addSubview:strip];

    TitleLbl = [[UILabel alloc] initWithFrame:CGRectMake(65, 7, 130, 35)];
    TitleLbl.text =[Right_Menu_array objectAtIndex:indexPath.row];
    TitleLbl.textColor=[UIColor darkGrayColor];
    TitleLbl.font = [UIFont systemFontOfSize:15];
    [cell.contentView addSubview:TitleLbl];

    img = [[UIImageView alloc] initWithFrame:CGRectMake(10, 7, 35, 35)];
    img.image = [UIImage imageNamed:[imageArr1 objectAtIndex:indexPath.row]];
    [cell.contentView addSubview:img];
}

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

   TitleLbl.textColor = [UIColor redColor];
    strip.backgroundColor = [UIColor redColr];
    img.image = [UIImage imageNamed:@"rahul.png"];
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    TitleLbl.textColor = [UIColor darkGrayColor];
    strip.backgroundColor = [UIColor whiteColor];
    img.image = [UIImage imageNamed:@"rahul.png"];
}

enter image description here

2 个答案:

答案 0 :(得分:0)

简单的方法是创建一个自定义的UITableViewCell然后在UITableView的委托函数中获取CustomTableViewCell的实例并设置标签textColor。

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

CustomTableViewCell *cell =(CustomTableViewCell *)[tableView   cellForRowAtIndexPath:indexPath];
    cell.TitleLbl.textColor = [UIColor redColor];
    cell.strip.backgroundColor = [UIColor redColr];
    cell.img.image = [UIImage imageNamed:@"rahul.png"];
}

PS:还有很多其他的解决方法......这取决于你想如何实现代码。

其他方式,

//将标志变量设置为

@property (strong ,nonatomic) NSIndexPath *selectedIndexPath;


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

      self.selectedIndexPath = indexPath;
      [tableView reloadData];
      }



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

    NSString *cells=@"cell";
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cells];

    if (cell==nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cells];
    }


    strip = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 7, cell.frame.size.height)];
    strip.backgroundColor = [UIColor orangeColor];


    TitleLbl = [[UILabel alloc] initWithFrame:CGRectMake(65, 7, 130, 35)];
    TitleLbl.text =[Right_Menu_array objectAtIndex:indexPath.row];
    TitleLbl.textColor=[UIColor darkGrayColor];
    TitleLbl.font = [UIFont systemFontOfSize:15];

    img = [[UIImageView alloc] initWithFrame:CGRectMake(10, 7, 35, 35)];
    img.image = [UIImage imageNamed:[imageArr1 objectAtIndex:indexPath.row]];

    if(indexPath == selectedIndexPath)
    {
        TitleLbl.textColor = [UIColor redColor];
        strip.backgroundColor = [UIColor redColr];
        img.image = [UIImage imageNamed:@"rahul.png"];
    }

    [cell.contentView addSubview:strip];
    [cell.contentView addSubview:TitleLbl];
    [cell.contentView addSubview:img];
    }

//此代码未经过测试。

答案 1 :(得分:0)

从代码中,我可以看到你持有上一个已知条带属性的引用,TitleLbl和img,它们将始终是从

访问的最后一个UITableViewCell的组件。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

由于您的单元格左侧有橙色条带,我更愿意创建自定义UITableViewCell来保存引用。

@interface CustomCell : UITableViewCell

@property (nonatomic,strong) UIView *strip;
@property (nonatomic,strong) UILabel *titleLbl;
@property (nonatomic,strong) UIImageView *imgView;

@end

然后使用自定义单元格,您的代码可以是

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

    NSString *cellIdentifier = @"cellIdentifier";
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (!cell) {
        cell = [[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];

        // create and add components
        cell.strip = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 7, cell.frame.size.height)];
        [cell.contentView addSubview:cell.strip];

        cell.titleLbl = [[UILabel alloc] initWithFrame:CGRectMake(65, 7, 130, 35)];
        [cell.contentView addSubview:cell.titleLbl];

        cell.imgView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 7, 35, 35)];
        [cell.contentView addSubview:cell.imgView];
    }

    // modify existing components
    cell.strip.backgroundColor = [UIColor orangeColor];

    cell.titleLbl.text = [Right_Menu_array objectAtIndex:indexPath.row];
    cell.titleLbl.textColor = [UIColor darkGrayColor];
    cell.titleLbl.font = [UIFont systemFontOfSize:15];

    cell.imgView.image = [UIImage imageNamed:[imageArr1 objectAtIndex:indexPath.row]];

    if ([cell isSelected]) {
        // remember to keep the changes for cell in it's selected state
    }
}

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

    CustomCell *cell = (CustomCell *) [tableView cellForRowAtIndexPath:indexPath];
    cell.titleLbl.textColor = [UIColor redColor];
    cell.strip.backgroundColor = [UIColor redColor];
    cell.imgView.image = [UIImage imageNamed:@"rahul.png"];
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomCell *cell = (CustomCell *) [tableView cellForRowAtIndexPath:indexPath];
    cell.titleLbl.textColor = [UIColor darkGrayColor];
    cell.strip.backgroundColor = [UIColor whiteColor];
    cell.imgView.image = [UIImage imageNamed:@"rahul.png"];
}

您也可以覆盖自定义单元格中的方法

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}