好吧基本上我有一个tableView
填充在“.plist”中的项目。
tableView
然后从此代码中获取其功能:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row == 0) {
//do something
}
if (indexPath.row == 1) {
//do something
}
但是我希望tableView
中的项目或文字在按下时改变颜色,当它被释放时它应该恢复原来的颜色。
然后我添加了此代码来更改背景颜色,因为我找不到任何更改文本的内容:
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.textLabel.font=[UIFont fontWithName:@"Helvetica" size:22.0];
cell.contentView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
但问题是它仍然保留了这种背景色。
然后我尝试创建一个这样的取消选择方法:
-(void)tableView:(UITableView *)tableView deSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.textLabel.font=[UIFont fontWithName:@"Helvetica" size:22.0];
cell.contentView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:1.0 alpha:2.0];
}
然而,这不会再次改变颜色。
所以基本上我要么想要在按下时改变背景颜色或文本颜色,然后在它被释放时改回原来的颜色。非常类似UIButton
按下时的工作原理。
答案 0 :(得分:0)
正确的方法是将selectedBackgroundView和backgroundView设置为单元格。
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CELL"];
if(!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CELL"];
UIView * selectedBackgroundView = [[UIView alloc] initWithFrame:CGRectZero];
selectedBackgroundView.backgrounColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
cell.selectedBackgroundView = selectedBackgroundView
}
return cell;
}
这样,您无需在选择完成后设置背景颜色,并在取消选择时更改颜色。
如果您想根据选择更改文本属性,子类UITableViewCell并覆盖setSelected:animated method。
- (void)setSelected:(BOOL)selected animated:(BOOL)animated{
[super setSelected:selected animated:animated];
self.textLabel.titleColor.textColor = selected ? selectedColor : notSelectedColor;
}