2013-06-20 35 views
13

私は自分のテーブルビューにカスタムテーブルビューセルを使用しています。境界線を設定するために、私はカスタムセルのビューを配置し、境界線のプロパティを変更しています。選択時にUITableViewCellの境界線の色を変更します。

self.borderView.layer.borderColor = VIEW_BORDER_COLOR; 

選択したセルを境界線の色を変更してハイライトしたいとします。私は、didselectrowforindexpathでそれを変更しようとした

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

が、細胞が再利用されているとして、それはスクロールに変化し

+0

あなたは... –

+0

[セルsetShowsTouchWhenHighlighted:YES]を複数選択や単一選択を行っています。これを試してみてください... – Jitendra

答えて

19

あなたは

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

を使用することができますが、それはあなたを助ける願っています。

4

ちょうど

like-選択されたインデックスをキャッシュ保存/

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

like-何度も何度も(uが一度に選択された一つだけを必要とすると仮定)/非マークをマークするために、境界線の色を持っています

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

うまくいけばうれしいです..正解を受け入れることを検討してもいいかもしれません:) –

+0

私は本当にいいと思いますが、まだ評判はありません:( –

+0

borderViewはUITableViewCell – Necreaux

31

使用:

スウィフト2

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

スウィフト3

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