我按如下方式定义UITableViewCell(和子视图):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = (UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"Cell"];
cell = [[UITableViewCell alloc]init]; // Without this, subviews stack on one another
... cell stuff (textLabel, etc)
UIButton *buttonDown = [[UIButton alloc] init];
[buttonDown setFrame:CGRectMake(190.0, 7.0, 40.0, 30.0)];
[buttonDown setBackgroundImage:[UIImage imageNamed:@"button"] forState:UIControlStateNormal];
[buttonDown setBackgroundImage:[UIImage imageNamed:@"buttonSelected"] forState:UIControlStateHighlighted];
[buttonDown setTitle:@"-" forState:UIControlStateNormal];
buttonDown.tag = indexPath.row;
[buttonDown addTarget:self action:@selector(quantityDown:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:buttonDown];
return cell;
}
按钮使用正确的背景颜色初始化,按钮在我选择时正确调用该方法,但选择后背景颜色不会改变。
我已经尝试将它放在方法调用中,如下所示:
- (void) quantityDown:(id)sender {
UIButton *btn = (UIButton *)sender;
[btn setBackgroundImage:[UIImage imageNamed:@"buttonSelected"] forState:UIControlStateHighlighted];
}
但仍然没有骰子。即使是简单的[btn setBackGroundColor:[UIColor redColor]];
也无法解决问题。
提前致谢。
编辑#1:
所以我正在玩这个,按钮背景图像会更改,但只有按住按钮(而不是快速点击或点击)。
即使创建自定义单元格也具有相同的“必须按住按钮才能更改背景”的要求。自定义单元格定义如下:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
self = [nibArray objectAtIndex:0];
[self setSelectionStyle:UITableViewCellSelectionStyleNone];
[self.downButton setBackgroundImage:[UIImage imageNamed:@"button"] forState:UIControlStateNormal];
[self.downButton setBackgroundImage:[UIImage imageNamed:@"buttonSelected"] forState:UIControlStateHighlighted];
}
return self;
}
由于自定义单元格与原始代码具有完全相同的行为,因此我试图坚持使用原始代码。无论如何,有什么想法延迟/需要按住按钮?为什么不是即时的,就像其他地方我使用setBackgroundImage:forState:
方法一样?
答案 0 :(得分:1)
请参阅此文章,了解UIScrollView中的按钮突出显示延迟:Is it possible to remove the delay of UIButton's highlighted state inside a UIScrollView?
UITableView是UIScrollView的子类。