在自定义单元格中点击 UIButton 不会调用 didSelectRowAtIndexPath

Posted

技术标签:

【中文标题】在自定义单元格中点击 UIButton 不会调用 didSelectRowAtIndexPath【英文标题】:Tapping UIButton in custom cell doesn't call didSelectRowAtIndexPath 【发布时间】:2013-02-11 21:52:26 【问题描述】:

我在以编程方式添加的自定义单元格中有一个 UIButton:

UIButton *tag = [[UIButton alloc] init];
[tag addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

这是我的按钮处理程序:

-(void)buttonClicked:(id)sender

    UIButton *clickedButton= (UIButton*)sender;
    NSLog(@"Button tapped!", nil);
    self.tagTapped = YES;
    self.tagSelected = clickedButton.titleLabel.text;

按钮点击已注册,但我的主视图控制器中的 didSelectRowAtIndexPath 没有被调用。点击单元格中的其他位置有效,但点击按钮不会调用该方法。有什么想法吗?

【问题讨论】:

【参考方案1】:

点击单元格中的其他位置有效,但点击按钮不会调用方法 (didSelectRowAtIndexPath)。

这是设计使然。大多数人使用 UIButtons 来做一些不同于用户选择行时发生的事情。例如,在 Apple 的 Phone 应用程序中浏览语音邮件时,点击该行会启用 Call Back & Delete 按钮,同时点击该行的蓝色 AccessoryDe​​tailDisclosureButton 会显示一个新的 ViewController,其中显示语音邮件的日期和电话号码。

【讨论】:

谢谢,我刚刚做了一个委托方法来处理 UIButton 的调用。

以上是关于在自定义单元格中点击 UIButton 不会调用 didSelectRowAtIndexPath的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 移动到自定义单元格中的情节提要

UITableview 单元格中的按钮不会在快速点击时突出显示

在自定义 collectionview 单元格中填充图像而不会闪烁

如何使 UIButton 仅出现在最后一个单元格中?

UITableViewController 自定义单元格中缺少 UIButton 默认点击淡入淡出动画

UITableView didSelectRowAt indexPath 未在自定义单元格中调用