1

我有以下设置:我有 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");}
4

4 回答 4

1

替换此行

[but addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchDown];

[but addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
于 2013-02-14T06:16:45.267 回答
1

试试这个

为标签和按钮设置setUserInteractionEnabledyes

于 2013-02-14T06:27:39.867 回答
0

如果您使用的是自定义单元格,则使用 UITableCell 中的静态按钮并在 xib 中添加按钮和标签并连接按钮的方法。

于 2013-02-14T06:19:01.393 回答
0

事件必须是UIControlEventTouchUpInside。还尝试将单元格选择样式设置为None. 可能是细胞受到影响。

cell.selectionStyle = UITableViewCellSelectionStyleNone

于 2013-02-14T06:24:27.243 回答