UITableViewCell内的IBAction未在iOS 9

时间:2015-09-21 21:58:48

标签: ios swift uitableview ibaction

我有一个自定义UITableViewCell子类,其中包含从笔尖连接的几个IBAction方法。

在iOS 8下,一切都按预期工作。如果用户点击其中一个按钮,则会调用相应的IBAction。如果用户点击单元格上的任何其他位置,则会调用UITableView didSelectRowAtIndexPath

在iOS 9下,我的IBAction方法永远不会被调用。无论用户点击单元格(按钮与否),UITableView didSelectRowAtIndexPath始终会被触发。

该项目是在Xcode 6 / Swift 1.2下编译的。

我在Apple论坛上发现这篇帖子没有解决方案。他们似乎有同样的问题。

https://forums.developer.apple.com/thread/16179

2 个答案:

答案 0 :(得分:26)

我找到了解决方案,希望这个答案可以节省别人的时间。

我继承了这个代码库,但它有一些问题。在iOS 9下无效的UITableViewCell's未使用UITableViewCell笔尖与ContentView。相反,有人创建了一个UIView笔尖,然后将其指向自定义UITableViewCell子类。这些笔尖没有ContentView,显然iOS 9对此更加挑剔。这个实现在iOS 8下运行良好,没有编译器或运行时错误或警告。

解决方案是创建一个新的UITableViewCell子类,让Xcode自动为它创建nib。然后我复制了旧笔尖的所有UI和代码,并将其粘贴到新笔尖的ContentView中。然后,我必须修复约束并重新连接到自定义子类的连接。

答案 1 :(得分:6)

只需在tableView cellForRowAtIndexPath方法

中添加此行即可
cell.contentView.userInteractionEnabled = false;
return cell;

但这不是一个合适的解决方案。

iOS 9,即使您使用自定义单元格/ xib,也会将内容视图放入tableViewCell。在自定义单元格之后添加内容视图,它位于自定义单元格之上。

要正确解决此问题,只需使用对象库中的UITableviewCell替换自定义单元格/ xib的视图[通常拖放UIButtonUILabel等等...]; < / p>

相关问题