我有一个MyViewController类,它继承自MyGeneralViewController(本身是一个NSViewController子类)。在MyViewController xib文件中,我添加了两个NSComboBox,并选择"使用数据源"在IB中并连接两者的数据源和委托出口。 (他们都指的是相同的对象)
然后我在班上实施了numberOfItemsInComboBox:
和comboBox:objectValueForItemAtIndex:
。当我运行应用程序时,我得到两个相同的控制台消息(我假设每个组合一个):
"Illegal NSComboBox data source (<MyViewController: 0x6300001404d0>). Must implement numberOfItemsInComboBox: and comboBox:objectValueForItemAtIndex:"
在许多论文之后,我决定从IB中删除这些组合并以编程方式创建/管理它们(将useDatasource标志设置为TRUE,数据源等)。在控制台中仍然是相同的消息。在这种情况下我注意到虽然我的组合还活着,但在设置了他们的数据源并委托给自己(有适当的代表团)后,combo.datasource
和combo.delegate
返回 nil 。
然后,我创建了一个特殊的NS Object子类,它只是为这些组合的数据源服务:相同的消息。
在绝望的尝试中,我删除了这个MyDataSource类,并将NSComboDataSource和NSComboDelegate内容传输到MyViewController超类。你知道吗? "Illegal NSComboBox data source (<MyGeneralViewController: 0x6200001404a2>). Must implement numberOfItemsInComboBox: and comboBox:objectValueForItemAtIndex:"
对于所有这些尝试,我测试了IB和编程方法。但总是得到相同的警告(和空NSComboBox内容)。我在Sierra下运行Xcode 9.2,目标是10.11(也没有成功尝试10.12) - 有什么想法吗?
答案 0 :(得分:0)
从头开始重新创建一个新项目并复制粘贴前一个代码后,一切正常......使用MyViewController类或其MyGeneralViewController类,并在IB中设置数据源/委托。看起来像是XCode中的某个bug或者损坏的项目文件...