2013-06-20 19 views
13

Sto usando una cella di visualizzazione tabella personalizzata per il mio tableview. Per impostare il bordo, ho messo una vista sulla cella personalizzata e sto cambiando le sue proprietà del bordo.Cambia colore del bordo di UITableViewCell sulla selezione

self.borderView.layer.borderColor = VIEW_BORDER_COLOR; 

Desidero evidenziare la cella selezionata cambiando il colore del bordo. Ho provato a cambiare in didselectrowforindexpath,

cell.borderView.layer.borderColor = [UIColor yellowColor].CGColor; 

ma come le cellule vengono riutilizzati cambia lo scorrimento.

+0

si sta facendo selezione multipla o singola selezione ... –

+0

[cellule setShowsTouchWhenHighlighted: YES]; prova questo ... – Jitendra

risposta

19

È possibile utilizzare

[cell.contentView.layer setBorderColor:[UIColor blackColor].CGColor]; 
[cell.contentView.layer setBorderWidth:2.0f]; 

Spero che ti aiuta.

4

dovrà marcare/non-contrassegno (supponendo che u bisogno di un solo selezionato alla volta) il colore del bordo di nuovo e di nuovo come-

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if(indexPath.row==self.selectedRow){ 
cell.borderView.layer.borderColor = [UIColor yellowColor].CGColor; 
}else { 
cell.borderView.layer.borderColor = [UIColor clearColor].CGColor; 
} 
} 

Basta salvare/memorizzare nella cache l'indice selezionato come-

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

//Unselected the prevoius selected Cell 
      YourCellClass *aPreviousSelectedCell= (YourCellClass*)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:self.selectedRow inSection:0]]; 
      aPreviousSelectedCell.borderView.layer.borderColor = [UIColor clearColor].CGColor; 

//Selected the new one-  
      YourCellClass *aSelectedCell = (YourCellClass*)[tableView cellForRowAtIndexPath:indexPath]; 

    aSelectedCell.borderView.layer.borderColor = [UIColor yellowColor].CGColor; 

      self.selectedRow = indexPath.row; 
     } 
+0

Contento se ha funzionato..può prendere in considerazione l'accettazione della risposta corretta :) –

+0

vorrei davvero non potessi ... nessuna reputation ancora :( –

+0

borderView non è una proprietà valida per UITableViewCell – Necreaux

31

Usando:

Swift 2:

cell.layer.borderWidth = 2.0 
cell.layer.borderColor = UIColor.grayColor().CGColor 

Swift 3

cell.layer.borderWidth = 2.0 
cell.layer.borderColor = UIColor.gray.cgColor 
Problemi correlati