1

私は次のように設定しています: UITableView があり、その中に PBDetailsCell というカスタム セルを設定しています。

PBDetailsCell には、LeftLabel と RightLabel の 2 つのラベルが含まれています。右ラベル内にボタンを設定しています。ボタンが 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

これを試して

setUserInteractionEnabledラベルとボタンの両方に設定yes

于 2013-02-14T06:27:39.867 に答える
0

カスタム セルを使用している場合は、UITableCell でボタン static を使用し、xib でボタンとラベルを追加して、ボタンのメソッドを接続します。

于 2013-02-14T06:19:01.393 に答える
0

イベントは でなければなりませんUIControlEventTouchUpInside。また、セル選択スタイルを にしようとしNoneます。セルが触れるかもしれません。

cell.selectionStyle = UITableViewCellSelectionStyleNone

于 2013-02-14T06:24:27.243 に答える