我希望在用户点击后更新我的tableview中单元格的背景颜色。 问题是如果我通过调用禁用选择样式:
[代码] [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; [/代码]
颜色随着我的需要而变化,但在颜色变化之前,选择的用户没有视觉反馈,这对我的应用来说是不可取的。
当我删除该行并仅在IBAction函数中更改这样的颜色时:
[代码] [cell setBackgroundColor:[UIColor lightGrayColor]]; [/代码]
我最终在单元格中间有一个方形矩形,在选择之前使用原始颜色,并且我想要设置颜色的单元格边框。如果我两次调用我的IBAction功能,背景颜色设置正确。
我不确定原因是什么或如何解决它。
请记住,我在cellForRowAtIndexPath中完成了所有单元格设置(设置文本,背景颜色,文本阴影等)。我尝试了在willDisplayCell中执行此操作的另一种方法,但仍然没有运气。
希望有人可以发现一些事情:) 干杯 AF
答案 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