Swift ViewController 扩展中的@IBActions

Swift @IBActions in ViewController Extension

我在 Swift/Xcode 11 中注意到您不能按住 Ctrl 键将 IB 对象拖到 ViewController 扩展中来创建 IBAction,但您可以 cut/paste分机。在 ctrl 拖动以在 ViewController class 中创建 IBAction 之后 & 它起作用了。 w/moving IBAction 使用复制和粘贴到 ViewController 扩展有什么问题吗?为什么 Ctrl 拖动不适用于 VC 扩展?当我注意到这一点时,我正在将 UITextView 操作放在 ext w/other TextView 函数中,但不完全理解为什么 ctrl-drag 不起作用但 cut/paste 似乎没有显示任何问题。感谢您考虑问题。

除非有人为 Apple 工作,否则我不确定我们会在这里得到实际答案。我可以猜到并给你一个对我有用的替代方案。

从 Xcode 功能实现的角度来看,支持这些操作的代码可能有所不同。.

据我所知,当故事板上 VC 的 class 与您拖动的 object 的 class 直接匹配时,控件拖动有效进入。

我从未尝试过拖动到扩展中,但我知道这可能会很复杂,因为扩展中不允许存储属性,这会增加复杂性,因为你也可以拖动插座。

但是,我也在 parent classes 上完成了 IBAction/IBOutlet,当我开始拖动时我能够让它工作从现有的 IBAction 函数(代码中它的左边有一个圆圈)到 child class.

的故事板

简而言之,我假设有很多假设和代码正在完成,以允许您从故事板拖到代码上,而且我很确定限制是由于处理极端情况的复杂性造成的。如果存在损坏的角落案例的可能性,Apple 通常会选择根本不允许行为。创建这些连接的其他一些方法(如复制和粘贴)可能更简单。