为什么IB不提供在自定义的Swift文件中插入@IBOutlet或@IBAction选项?

3

我创建了一个新的cocoa文件,它是NSObject的子类,并符合NSTableView协议。当我尝试从IB中的NSButton连接IBOutletIBAction时,没有选项弹出。我尝试了两种连接方式。

import Cocoa

class TestTableController: NSObject, NSTableViewDataSource, NSTableViewDelegate {
@IBOutlet weak var button:NSButton!
}

我尝试了手动连接,但结果相同。我能够从AppDelegate文件中成功连接。
以下是一些截图: 手动连接self属性 另一种尝试
1个回答

1

您需要添加一个NSObject(或您喜欢的任何其他类),然后将其选择为自定义类:

enter image description here

那么你应该能够将它连接到你的按钮。

它可以工作,但为什么我无法通过ctrl+拖动到文件本身进行连接。现在,当我尝试从AppDelegate实例化此类并调用隐藏按钮的函数时,我会收到一个错误:unexpectedly found nil while unwrapping an Optional value,这个错误很明显,但为什么它是nil。我该如何使用这个按钮。 - jyet
我并不是 Xcode 的设计者,所以请问苹果为什么 ctrl + drag 无法使用。nil 警告很可能是因为您仍然拥有一个与已不存在或未正确连接的东西的 IB 连接。 - l'L'l
感谢您的回答,如果我的问题有冒犯之处,我深感抱歉。 - jyet
@jyt:不用谢!我完全没有被冒犯到。还有其他的方法可以将类与IB元素连接起来(例如通过编程等方式),尽管当鼠标拖动连接对象时,这些对象仍然需要以某种方式与它们的类关联起来... - l'L'l

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接