17

我正在为我的表格视图使用自定义表格视图单元格。为了设置边框,我在自定义单元格上放置了一个视图,并且正在更改其边框属性。

self.borderView.layer.borderColor = VIEW_BORDER_COLOR;

我想通过更改其边框颜色来突出显示选定的单元格。我试图在 didselectrowforindexpath 中更改它,

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

但是随着单元格的重复使用,它会在滚动时发生变化。

4

3 回答 3

36

使用:

斯威夫特 2

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

斯威夫特 3

cell.layer.borderWidth = 2.0
cell.layer.borderColor = UIColor.gray.cgColor
于 2015-02-23T20:46:55.393 回答
21

你可以使用 Objective-C

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

斯威夫特 5

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

希望它可以帮助你。

于 2013-06-20T05:29:13.630 回答
5

必须一次又一次地标记/取消标记(假设您一次只需要选择一个)边框颜色,例如-

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

只需保存/缓存选定的索引,例如-

    - (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;
        }
于 2013-06-20T05:35:02.267 回答