Tableview自定义单元格按钮

时间:2011-07-12 08:21:04

标签: objective-c xcode uitableview

我用自定义单元制作了一个tableview。单元格包括标签和按钮。问题是,如何在按下按钮时检测标签的文本?

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
    // Initialization code
        primaryLabel = [[UILabel alloc]init];
        primaryLabel.textAlignment = UITextAlignmentLeft;
        primaryLabel.font = [UIFont systemFontOfSize:11];
        primaryLabel.backgroundColor = [UIColor clearColor];
        secondaryLabel = [[UILabel alloc]init];
        secondaryLabel.textAlignment = UITextAlignmentLeft;
        secondaryLabel.font = [UIFont systemFontOfSize:9];
        secondaryLabel.backgroundColor = [UIColor clearColor];
        myImageView = [[UIImageView alloc]init];

        btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.backgroundColor = [UIColor clearColor];

        [self.contentView addSubview:btn];
        [self.contentView addSubview:primaryLabel];
        [self.contentView addSubview:secondaryLabel];
        [self.contentView addSubview:myImageView];
    }

    return self;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{   
    static NSString *CellIdentifier = @"Cell";

    cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) 
    {
        cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    return cell;
}

1 个答案:

答案 0 :(得分:0)

您正在寻找的方法是 - addTarget:action:forControlEvents:

使用你的例子,你有一个UIButton,btn,假设你的自定义单元格中有一个名为myAction的动作。代码如下所示:

[btn addTarget:self action:myAction forControlEvents:UIControlEventTouchUpInside];

因为myAction是单元格中的一种方法,所以您可以轻松访问label属性。如果您需要将您的操作放在不同的控制器中:

[btn addTarget:otherController action:myAction forControlEvents:UIControlEventTouchUpInside];

在这种情况下,您必须在控制器中保留对单元格的引用。由于您可能有多个单元格,因此可以将NSMutableArray作为属性保留,并在构建表格时添加单元格。