我用自定义单元制作了一个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;
}
答案 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作为属性保留,并在构建表格时添加单元格。