我在表cellForRowAtIndexPath:
方法中有一个动态创建的UIButton。它加载很好,可以选择它,但是当它被选中时它不会执行高亮动画。我尝试添加:
if(commandButton.isHighlighted)
,并且在选中时未触发。这是我加载单元格的方式:
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString* CellIdentifier=@"CommandCell";
UITableViewCell* commandCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
UIButton* commandButton = [[UIButton alloc]initWithFrame:commandCell.frame];
[commandButton setTitle:@"Title" forState:UIControlStateNormal];
[commandCell.contentView addSubview:commandButton];
commandButton.backgroundColor = [UIColor blackColor];
return commandCell;
}
每当我点击它时,commandButton
都不会突出显示......
编辑:这是一个愚蠢的问题,我没有按住鼠标足够长的时间。对于那些有类似问题的人,只需在iOS模拟器中按下按钮更长时间。
答案 0 :(得分:1)
这可以帮助您将波纹管代码添加到您的代码
中如果你想在tuchupinside那么一些图像然后在代码下面。
[commandButton setBackgroundImage:/*add you image using UIImage*/forState: UIControlStateHighlighted];
如果你想要简单(默认背景颜色出现在tuchupinside上的按钮中)。
UIButton *buttonTap=[UIButton buttonWithType:UIButtonTypeRoundedRect];
并像这样设置框架
buttonTap.frame=commandCell.frame;
//make some adjustment as per requied.
如果你想要一些模糊类型效果(半部分选择) 然后你去
UIButtonTypeCustom //type
答案 1 :(得分:1)
您在以下行中创建的UIButton
UIButton* commandButton = [[UIButton alloc]initWithFrame:commandCell.frame];
默认情况下,是自定义样式UIButton
。对于此按钮,您必须手动设置所有属性 。你想要的是这个:
UIButton *commandButton = [UIButton buttonWithType:UIButtonTypeSystem];
[commandButton setFrame:cell.frame];
UIButtonTypeSystem
包含您要查找的样式。
希望这有帮助!
答案 2 :(得分:0)
我不知道在哪里用这个?但我的建议仍然是给按钮添加标签,如果你将它添加到单元格中,如:
UIButton* commandButton = [[UIButton alloc]initWithFrame:commandCell.frame];
[commandButton setTitle:@"Title" forState:UIControlStateNormal];
commandButton.tag = 1;
[commandCell addSubview:commandButton];
commandButton.backgroundColor = [UIColor blackColor];
并且在访问同一个按钮时;
//你必须得到单击按钮的单元格
UIButton *button =(UIButton *)[cell viewWithTag:1];
在此按钮上您可以使用:
if(commandButton.isHighlighted)
答案 3 :(得分:0)
在向细胞视图添加按钮之前,请尝试添加:
NSArray * views = [commandCell.contentView subviews];
for (UIView *object in views) {
[object removeFromSuperview ];
}
因为可能你在另一个上有多个单元格,所以实际点击按钮是“最底部单元格视图”按钮。