2015-09-08 74 views
1

我有一個自定義單元格與imageview和標籤。當用戶在tableview中選擇一個特定的單元格時,我想更改圖像的顏色或色調。 我設法改變標籤的顏色,但不知道如何處理圖像。有任何想法嗎?在uitableview中選擇時更改自定義單元格圖像顏色?

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

     static NSString *CellIdentifier = @"MenuCell"; 

     MenuTableViewCell *cell = (MenuTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 

      cell = [[MenuTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
      // cell.selectionStyle = UITableViewCellSelectionStyleNone; 

     } 


     cell.lblTitle.text = [[_items objectAtIndex:[indexPath row]] valueForKey:@"title"]; 
     cell.imgIcon.image = [UIImage imageNamed:[[_items objectAtIndex:[indexPath row]] valueForKey:@"image"]]; 
     cell.lblTitle.highlightedTextColor = [UIColor colorWithRed:0.839 green:0.682 blue:0.047 alpha:1]; 
     cell.selectionStyle = UITableViewCellSelectionStyleGray; 
     return cell; 
    } 

由於

回答

6

您應該更改MenuTableViewCell自定義類中的單元格數據。那裏會有一些方法控制選定的高亮狀態。該方法看起來就像這個例子中,

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
[super setSelected:selected animated:animated]; 
if (selected) { 
    //Change the text colour & image 
} else { 
    //Change it back to whatever is was 
} 

}

+0

這是正確的答案,謝謝。 –

+0

歡迎您:) – Devster101

1

在該方法tableviewDidSelectRowAtIndexPath寫這個代碼

//編輯,以正確的語法

{ 
    MenuTableViewCell *cell = (MenuTableViewCell *)[tableview cellForRowAtIndexPath:indexPath]; 
cell.image = [UIImage imageNamed:@"your image name when you want to change to selected"]; 
} 
+0

謝謝!你把我放在正確的軌道上。 –

1

正確的語法如下:

在方法tableviewDidSelectRowAtIndexPath

MenuTableViewCell *cell = (MenuTableViewCell *)[tableView cellForRowAtIndexPath:indexPath]; 
cell.imgIcon.image = [UIImage imageNamed:@"your image name when you want to change to selected"]; 

薩希卜羅伊的回答讓我在正確的軌道上,但cellAtIndexPath必須通過的cellForRowAtIndexPath被替換。

編輯:在上面的代碼中正在做的是有兩個不同的圖像,並根據是否選擇單元格來更改它們。

結合以薩希卜羅伊,longpham和Devster101給出的答案,最後我下面的代碼添加自定義單元格類MenuTableViewCell.m:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 
    if (selected) { 
     UIImage * image = [_imgIcon.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
     _imgIcon.image = image; 
     _imgIcon.tintColor = [UIColor colorWithRed:0.839 green:0.682 blue:0.047 alpha:1]; 
     [_imgIcon tintColorDidChange]; 

    } else { 
     UIImage * image = [_imgIcon.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
     _imgIcon.image = image; 
     _imgIcon.tintColor = [UIColor blackColor]; 
     [_imgIcon tintColorDidChange]; 
    } 
} 
+0

感謝您的編輯,是啊在Windows PC上,所以你可以理解;) –

+0

你想改變細胞圖像的顏色,但此代碼只改變了細胞圖像的另一個圖像。 –

+0

你是對的,這是一個臨時的解決方案,但並不理想。 –

3

如果你想,當你選擇一個單元來改變細胞圖像。您可以使用tintColor繪製當前圖像。見下面的代碼。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    MenuTableViewCell *cell = (MenuTableViewCell *)[tableView cellForRowAtIndexPath:indexPath]; 

    // Change cell image color 
    UIImage * image = [cell.imgIcon.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
    cell.imgIcon.image = image; 
    cell.imgIcon.tintColor = [UIColor redColor]; // Your tint color 
    [cell.imgIcon tintColorDidChange]; 
} 

希望有所幫助!

+0

感謝您的幫助,我與用戶姓名有誤,我編輯了我的答案並添加了您的問候。 –

相關問題