我在故事板中设置了单元格原型,并使用UIButton来选择执行特定操作。这是我的代码;
`
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"ProjectCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell){
UILabel *titleLabel = (UILabel *)[cell viewWithTag:101];
titleLabel.text = @"New York";
UIImageView *mainImage = (UIImageView *)[cell viewWithTag:102];
[mainImage setImage:[UIImage imageNamed:@"nyc_temp.png"]];
UITextView *descText = (UITextView *)[cell viewWithTag:103];
[descText setText:@"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua..."];
UIButton *selectButton = (UIButton *)[cell viewWithTag:104];
[selectButton addTarget:self action:@selector(selectButtonPressed) forControlEvents:UIControlEventTouchUpInside];
}
return cell;
}
-(void)selectButtonPressed//:(id)sender withEvent:(UIEvent *)event
{
NSLog(@"");
}
`
从不调用selectButtonPressed。我知道selectButton是正确的按钮,因为我可以更改viewWithTag线下方的文本,背景颜色等,为什么目标不会粘住?
更新:我已经更改了我的代码以使用自定义单元格类,但仍然没有运气,并且正如一个人建议明确地将按钮强制转换为UIButton(这不应该是我想到的吗?)
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"TemplateTableViewCell";
TemplateTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
if(cell){
UILabel *titleLabel = (UILabel *)[cell viewWithTag:101];
titleLabel.text = @"New York";
[cell.mainImage setImage:[UIImage imageNamed:@"nyc_temp.png"]];
[cell.desc setText:@"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua..."];
[cell.selectButton setUserInteractionEnabled:YES];
[(UIButton *)cell.selectButton addTarget:self action:@selector(selectButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
}
return cell;
}
-(void)selectButtonPressed:(id)sender
{
NSLog(@"");
}
仍然不起作用,我可以用其他方式与按钮交互,除了能够设置目标方法。它与触摸层次结构有关吗?
答案 0 :(得分:0)
使用此代码
设置表格视图单元格按钮的操作[(UIButton *)[cell.contentView viewWithTag:104] addTarget:self action:@selector(selectButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
并使用发件人
定义这样的方法-(void)selectButtonPressed:(id)sender
{
NSLog(@"Method called");
}
答案 1 :(得分:0)
如果您在原型单元格中创建了selectButton,那么所有子视图都会添加到表格视图单元格的容器视图中,因此要获得带有标记的所需按钮,您必须调用:
[(UIButton *)[cell.contentView viewWithTag:104] addTarget:self action:@selector(selectButtonPressed) forControlEvents:UIControlEventTouchUpInside];
并确保您已为104
提供tag
selectButton
值,并检查您是否未将104 tag
值提供给任何其他视图。
答案 2 :(得分:0)
原来错误地在代码的另一部分中禁用了CELL userInteration,这阻止了任何触摸输入。