带有 IBAction 的按钮导致“无法连接操作,目标类 NSNibExternalObjectPlaceholder 不响应 -action”错误

Posted

技术标签:

【中文标题】带有 IBAction 的按钮导致“无法连接操作,目标类 NSNibExternalObjectPlaceholder 不响应 -action”错误【英文标题】:Button with IBAction causes "Could not connect action, target class NSNibExternalObjectPlaceholder does not respond to -action" error 【发布时间】:2016-01-07 01:52:36 【问题描述】:

我有一个 Storyboard 场景,其中包含一个 NSTableView 和一个 NSTableViewRow 子类。在这个表格视图行中,我有一个按钮,我已将其连接到场景中视图控制器中的一个操作。

当表格加载时,我从 Xcode 中看到了这个神秘的错误,并且当我单击按钮时该操作永远不会触发:

Could not connect action, target class NSNibExternalObjectPlaceholder does not respond to -playVideo:

看起来文件的所有者永远不会被连接起来。

由于这些 NSTableRowViews 是通过编程方式实例化的,我检查了是否设置了所有者,确实是:

- (NSView *) tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
...
CombinedHistoryEntryTableCellView *cellView = [tableView makeViewWithIdentifier:@"deviceEvent" owner:self];
...
return cellView;

【问题讨论】:

【参考方案1】:

我相信我遇到了一个错误(稍后我将提交雷达报告),但我能够通过将按钮连接到 IB 中 CombinedHistoryEntryTableCellView 类的操作来解决此问题。由于运行该操作所需的代码位于视图控制器中,因此我为单元格视图对象提供了对控制器的引用,以便它可以调用它。

虽然仍然不知道为什么这是一个问题,但如果其他人遇到这种情况,这是一个合适的解决方法。

【讨论】:

以上是关于带有 IBAction 的按钮导致“无法连接操作,目标类 NSNibExternalObjectPlaceholder 不响应 -action”错误的主要内容,如果未能解决你的问题,请参考以下文章

触发drawRect重绘视图的按钮

UINavigationBar 按钮,根据点击改变 IBAction

自定义 UITableViewCell 中按钮上的 IBAction

重复调用 UINavigationController 的 push 导致访问错误

当我连接 IBOutlet 时,IBAction 停止工作

IBAction on Button Press [关闭]