无法在Xcode中连接IBAction

fed*_*ffn 17 xcode ios swift

当我从故事板上的按钮拖动到我的视图控制器Swift文件时,我只能选择插入Outlet或Outlet Collection.

同样,如果我手动创建IBAction并尝试将其连接到故事板上的按钮,我无法连接这两个.

此问题仅出现在我的一个项目中,但它发生在我项目中的所有故事板上.

看起来像Xcode错误,但也许有人知道一个解决方法.

(这很难说,但截图中拖动的元素是一个按钮.)

在此输入图像描述

man*_*sar 23

我的Swift项目中有类似的问题让我很生气.

它转变了这是在扩展UIButton具有@IBInspectable属性时混合自定义协议采用的问题.更多细节如下.

我终于找到了那是因为我已经在我的项目下面的代码:(版权去凯文McNeigh:https://www.iphonelife.com/blog/31369/swift-programming-101-mastering-dynamic-type-ios)

protocol DynamicTypeChangeHandler {

    var typeObserver: Bool {get set}
}

extension UIButton: DynamicTypeChangeHandler {
    @IBInspectable var typeObserver: Bool {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我从扩展或@IBInspectable关键字中删除协议采用,我可以再次在Interface Builder中设置操作.纯粹的疯狂.Xcode <3

  • 同样的问题在这里 我没有`@IBInspectable`属性,但扩展了`UIButton`以符合协议.必须完全删除扩展名才能再次创建操作. (3认同)

Lin*_*Lin 8

您可以尝试将@IBAction参数更改(_ sender: Any)(_ sender: UIButton)(_ sender: AnyObject),但可以手动更改.

它可能会奏效.


kel*_*ket 5

我无法谈论根本原因 - 在XCode中似乎总是出现问题,但您总是可以@IBAction func(sender: UIButton) { }在视图/控制器中手动编写IBAction,然后从storyboard元素控制拖动到操作本身.如果这不起作用,请尝试从代码边缘的IBAction创建的节点链接回故事板.当XCode停止工作时,这对我有用.