我想要在点击时更改单元格文本颜色,而不是背景颜色。
我希望单元格背景始终为白色,并且只选择要更改的文本颜色。
我已经看到了一些关于如何做到这一点的答案......
onResume
...但是创建的视图在单元格分隔符的顶部运行。
要使用UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor whiteColor];
[cell setSelectedBackgroundView:bgColorView];
更改textColor,我无法cell.textLabel.highlightedTextColor = [UIColor brownColor];
,所以我需要弄明白。
答案 0 :(得分:3)
如果要显示单元格的分隔符,可能需要:
添加以下代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
cell.textLabel.highlightedTextColor = [UIColor brownColor];
UIView *backgroudView = [[UIView alloc]initWithFrame:CGRectMake(0, 1, tableView.bounds.size.width, [self tableView:tableView heightForRowAtIndexPath:indexPath] - 2)];
backgroudView.backgroundColor = [UIColor whiteColor];
UIView *placeholderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
placeholderView.backgroundColor = [UIColor clearColor];
[placeholderView addSubview:backgroudView];
cell.selectedBackgroundView = placeholderView;
...
}
// These codes are used to show the separatorView when the cell didSelected
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
void (^showSeparatorView)(UITableViewCell *cell) = ^(UITableViewCell *cell){
for (id obj in cell.subviews) {
if([obj isKindOfClass:NSClassFromString(@"_UITableViewCellSeparatorView")]){
UIView *view = (UIView *)obj;
view.hidden = NO;
}
}
};
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
showSeparatorView(cell);
if (indexPath.row > 0)
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row - 1 inSection:indexPath.section]];
showSeparatorView(cell);
}
...
}
// These codes are used to show the separatorView when the cell didHightlight
- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
void (^showSeparatorView)(UITableViewCell *cell) = ^(UITableViewCell *cell){
for (id obj in cell.subviews) {
if([obj isKindOfClass:NSClassFromString(@"_UITableViewCellSeparatorView")]){
UIView *view = (UIView *)obj;
view.hidden = NO;
}
}
};
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
showSeparatorView(cell);
if (indexPath.row > 0)
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row - 1 inSection:indexPath.section]];
showSeparatorView(cell);
}
}
希望这些可以帮到你!
答案 1 :(得分:0)
在cellForRowAtIndexPath方法中添加此项,以便在单击单元格而不是更改标签文本颜色时
cell.textLabel.highlightedTextColor = [UIColor brownColor];
答案 2 :(得分:0)
你可以使用它 -
def reverse(n):
j=0
while(n!=0):
j=j*10
j=j + (n%10)
n=n/10
print(j)
reverse(45)
答案 3 :(得分:0)
您可以添加代码cell.selectedBackgroundView = [UIView new];
来解决这个问题。使用此方法,您不需要cell.selectionStyle = UITableViewCellSelectionStyleNone;
。