我有一个反复出现的问题,我还没有找到一个干净的解决方案。我在NSViewController中有一个NSTableView,它使用NSTableView的子类来实现数据源和委托协议,例如。
class SecondEdit: NSWindowController, NSWindowDelegate {
@IBOutlet weak var subTrackTable: NSTableView!
var sublist = SubTrackListing()
func loadTable() {
// other stuff left out for brevity
subTrackTable.setDataSource(sublist)
subTrackTable.setDelegate(sublist)
subTrackTable.reloadData()
}
特别需要注意的是,WindowController的XIB文件包含Table,表的出口连接到NSWindowController类。
class SubTrackListing: NSTableView, NSTableViewDataSource, NSTableViewDelegate {
Usual NSTableView Delegate etc functions
}
这就像魅力一样,可以正确显示所有数据,并将所需的NSTableView函数保存在自己的(小)类中(因为Window / ViewController类本身变得非常臃肿)。
我的问题是我没有找到一种方法来从表格的texfields中获取用户编辑。如果windowController类也是NSTableView数据源/委托,那将是微不足道的。我只想连接文本域IBActions并获取发送者stringValues。在子类的情况下,虽然你可以像以前一样连接IBActions,但它们永远不会发生火灾。我已经尝试在IBs Custom Class对话框中设置NSTableView子类并将文本字段放在SubTrackListing类中,但不仅IB在这一步的每一步都与你争吵(你不能只是从IB拖到NSTableView子类) ,你必须首先在子类中编写IBAction,然后 - 有时 - 你可以从IBActions圈子拖到IB中的文本域并得到一个公认的连接,即IBAction - 即使Xcode似乎认为它是连接 - 永远不会发生(!)。所以我问这个_____!是怎么回事,怎样才能从子类NSTableView获得NSTableView输入。
是的,我可以将NSTableView函数推送到NSWindowController类中,但不仅如果你有多个表情况那么会有什么,我总体感觉应该有一种方法来做到这一点一个子类。 。 。 任何帮助,将不胜感激。 。 。