在基于视图的单列NSTableView的“表格单元格”视图中包含默认NSTextField的情况下,我试图通过将.xib的Interface Builder视图中的NSTextField的操作连接到窗口的ViewController中的方法。但是在运行时(在窗口初始化期间),我得到“无法连接操作,目标类NSObject不响应-textCellChanged”。我不明白哪个NSObject被错误地定位,并且窗口中还有许多其他NSView正确连接到同一WindowController中的其他出口和动作。
我还经常在NSTableView的上下文中看到各种具有类似症状的其他文章,并且在我的上下文中探索了针对其他问题的解决方案或部分解决方案,但没有成功。我在忽略Interface Builder中的Table View单元接线方面有什么特别的魔术吗?或用不同的措词表达: target 对象在运行时实际上是如何确定的,当 action 仅仅是文件所有者中的类方法时(以及何时针对不同的控件而有所不同)都连接到同一超级视图的同一所有者)?
以下是上下文的一些细节:
尽管在旧版本的Xcode中(我在10.2中),其他帖子还是暗示了Xcode的布线错误。这是我尝试过的各种方法,都具有相似的结果:
最后,这是一些相关文章以及它们之间的区别:
This听起来像是一个相同的症状,但在评论中,OP声称已通过将文件所有者设置为视图控制器(完成)并通过解决{{3} }(在我的上下文中不可见)。
XCode bugs建议我链接到一个过时的(已删除)方法;绝对不允许Xcode为我创建方法。
This建议用户放弃作为IB错误的情况,而放弃使用非目标/操作的解决方法。我想我可以寻求通过类似的解决方法来监听NSTextField上的通知。
最后,对于类似症状This unanswered post的公认答案是,在这种情况下,与文件所有者的连接不正确,其中文件所有者是NSApplication对象而不是View Controller。就我而言,文件所有者是定义这些方法的View Controller对象,因此感觉像是正确的目标。
这里有没有石头?预先感谢您的帮助。
答案 0 :(得分:0)
xib文件中文件的所有者是一个占位符对象,代表笔尖的所有者,并代表传递给makeView(withIdentifier:owner:)
的所有者对象。将笔尖的所有者(通常是视图控制器或窗口控制器)传递给makeView(withIdentifier:owner:)
。