UITableViewCell中的IBAction未在iOS 9中调用

Cha*_*ska 12 uitableview ibaction ios swift

我有一个自定义UITableViewCell子类,其中包含IBAction从nib连接的一些方法.

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

在iOS 9下,我的IBAction方法永远不会被调用.UITableView didSelectRowAtIndexPath无论用户在单元格中的哪个位置(按钮与否),都会始终触发.

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

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

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

Cha*_*ska 27

我想出了解决方案,希望这个答案可以节省别人的时间.

我继承了这个代码库,它有一些问题.在UITableViewCell's那些没有的iOS 9下工作没有使用UITableViewCellW/A碎粒ContentView.相反,有人创建了一个UIView笔尖,然后将其指向自定义UITableViewCell子类.笔尖没有一个ContentView,显然iOS 9对此更加挑剔.这个实现在iOS 8下工作正常,没有编译器或运行时错误或警告.

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

  • 或者只是在同一个xib文件中的对象库中添加UITableViewCell,copypaste/relayout/relink IBOutlets/set base class,然后删除旧视图. (6认同)

jay*_*iya 6

只需在tableView cellForRowAtIndexPath方法中添加此行即可

cell.contentView.userInteractionEnabled = false;
return cell;
Run Code Online (Sandbox Code Playgroud)

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

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

为了解决这个正确只是更换自定义单元格/厦门国际银行的观点,UITableviewCell从对象库[从那里你平时拖放UIButton,UILabel等...]