2014-01-06 121 views
1

我想在選中單元格時更改單元格的背景圖像。如何更改didSelectRowAtIndexPath中單元格的背景圖像

我試圖與這句法:

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ 
//for adding image 
cell.ImgCateg.image=[UIImage imageNamed:[ImgArr objectAtIndex:indexPath.row]]; 
    ... 
} 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CRHomeCategCell *cell = (CRHomeCategCell*)[_tblCateg cellForRowAtIndexPath:indexPath]; 
    cell.ImgCateg.image = [UIImage imageNamed:@"DefaultBg.png"]; 
} 

這在前景不改變圖像的背景。

請幫助和提前致謝。

回答

2

您可以在cellForRowAtIndexPath方法中設置UITableviewCell的屬性setSelectedBackgroundView

一樣,

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ 
{ 
.... 
UIImageView *normalCellBG = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height)]; 

[normalCellBG setImage:[UIImage imageNamed:@"box_nonselected.png"]];//Set Image for Normal 
[normalCellBG setBackgroundColor:[UIColor clearColor]]; 
[cell setBackgroundView:normalCellBG]; 


UIImageView *selecetedCellBG = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height)]; 
[selecetedCellBG setImage:[UIImage imageNamed:@"box_selected.png"]];//Set Name for selected Cell 
[selecetedCellBG setBackgroundColor:[UIColor clearColor]]; 
[cell setSelectedBackgroundView:selecetedCellBG ]; 

} 

this SO問題。

+0

你的回答運作良好,但這種方法獲取調用很多次,如果我們在'cellForAtIndexPath'書寫和圖像得到覆蓋。如何只調用一次該方法? – Krunal

+0

這是'setSelectedBackgroundView'單元格的正義代碼,您必須編寫正確的代碼來創建單元格,如'yourcell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 如果(細胞==零){//創建新}' –

+0

我寫了這一點,但沒有幫助, 'CRHomeCategCell *電池=(CRHomeCategCell *)[_ tblCateg dequeueReusableCellWithIdentifier:CellIdentifier];如果(細胞==零) {NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@「CRHomeCategCell」owner:self options:nil];如果([oneObject isKindOfClass:[CRHomeCategCell class]])cell =(CRHomeCategCell *)oneObject; [self setCellBGColorNormalAndSelectedForTableViewCell:cell cellForRowAtIndexPath:indexPath]; } cell.ImgCateg.image = [UIImage imageNamed:[ImgArr objectAtIndex:indexPath.row]]; return cell;' – Krunal

1

您可以在下面的方式做到這一點:

UIImage *cellImage = [UIImage imageNamed:@"myimage.png"]; 
UIImageView *cellView = [[UIImageView alloc] initWithImage:cellImage]; 
cellView.contentMode = UIContentViewModeScaleToFill; 
cell.backgroundView = cellView; 
相關問題