我有以下设置:我有UITableView,我在其中设置称为PBDetailsCell的自定义单元格。
PBDetailsCell包含2个标签:LeftLabel和RightLabel。我在右侧标签内设置了一个按钮,当在PBDetailsCell的右侧标签中按下按钮时,我想让它调用UITableView中设置的buttonPressed:方法。
我目前正在编写此代码,但似乎没有调用buttonPressed ...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ PBDetailsCell *cell = (PBDetailsCell *) [tableView dequeueReusableCellWithIdentifier:[PBDetailsCell reuseIdentifier]];
if(cell==nil){
[[NSBundle mainBundle] loadNibNamed:@"PBDetailsCell" owner:self options:nil];
cell=_detailCell;
_detailCell=nil;
}
cell.leftLabel.text = @" Action";
UIImage* img = [UIImage imageNamed:@"action.png"];
UIButton* but = [[UIButton alloc] initWithFrame:CGRectMake(0, 5, cell.rightLabel.frame.size.width-20, cell.rightLabel.frame.size.height-10)];
[but addTarget:self action:@selector(btnPressed:) forControlEvents: UIControlEventTouchUpInside];
[but setImage:img forState:UIControlStateNormal];
[cell.rightLabel addSubview:but];
}
- (void)btnPressed:(id)sender
{ NSLog(@"Button pressed");}
答案 0 :(得分:1)
替换此行
[but addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchDown];
与
[but addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
答案 1 :(得分:1)
试试这个
为标签和按钮设置setUserInteractionEnabled
为yes
答案 2 :(得分:0)
如果您使用的是Custom Cell,请在UITableCell中使用static按钮,并在xib中添加按钮和标签,并连接方法for button。
答案 3 :(得分:0)
活动必须为UIControlEventTouchUpInside
。还尝试将单元格选择样式设置为None
。可能是细胞得到了接触。
cell.selectionStyle = UITableViewCellSelectionStyleNone