更改背景自定义UITableViewCell的颜色一旦点击就不能正常工作

时间:2010-12-09 12:29:40

标签: iphone

我希望在用户点击后更新我的tableview中单元格的背景颜色。 问题是如果我通过调用禁用选择样式:

[代码] [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; [/代码]

颜色随着我的需要而变化,但在颜色变化之前,选择的用户没有视觉反馈,这对我的应用来说是不可取的。

当我删除该行并仅在IBAction函数中更改这样的颜色时:

[代码] [cell setBackgroundColor:[UIColor lightGrayColor]]; [/代码]

我最终在单元格中间有一个方形矩形,在选择之前使用原始颜色,并且我想要设置颜色的单元格边框。如果我两次调用我的IBAction功能,背景颜色设置正确。

我不确定原因是什么或如何解决它。

请记住,我在cellForRowAtIndexPath中完成了所有单元格设置(设置文本,背景颜色,文本阴影等)。我尝试了在willDisplayCell中执行此操作的另一种方法,但仍然没有运气。

希望有人可以发现一些事情:) 干杯 AF

2 个答案:

答案 0 :(得分:0)

结帐this链接可能有帮助......

快乐的iCODING ......

答案 1 :(得分:0)

我设法找到了我的问题的部分解决方案,以防其他人偶然发现同一问题:

// My cell disabling function (i use the cell as a button hence the postfix Btn)
-(void) disableLoginBtn
{
    loginBtnPtr.userInteractionEnabled = NO;
    [loginBtnPtr setBackgroundColor:[UIColor lightGrayColor]];
    [loginBtnPtr.textLabel setShadowColor: [UIColor whiteColor]]; 
}

-(void) someFunction
{
    ...
    // loginBtnPtr a pointer to the cell in my table i want to change its background color.
    // NOTE: If i include this setSelectionStyle function inside my disableBtn function the highlighting will be disabled all together and you wont get the effect you may be after.
    [loginBtnPtr setSelectionStyle:UITableViewCellSelectionStyleNone];
    [self disableLoginBtn];
}


-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
    ...
    [tableView deselectRowAtIndexPath:indexPath animated:YES];  
    // Make sure you reset the selection color to the one you are using, in my case blue. Otherwise the highlighting will be disabled for that cell through out the application 
    [loginBtnPtr setSelectionStyle:UITableViewCellSelectionStyleBlue];
}

希望它有所帮助 AF