【发布时间】:2017-06-09 05:36:10
【问题描述】:
所以我有一个奇怪的问题,过去几个小时一直困扰着我。
我有一个框架,我在其中创建了一个名为 ChatDelegate 的协议(代码如下)
public protocol ChatDelegate: class {
func chat(_ chatCollectionView: UICollectionView, didSelect message: Message)
}
和一个ViewController(不在框架中),它符合ChatDelegate,就像这样
extension ChatContainerViewController: ChatDelegate {
func chat(_ chatCollectionView: UICollectionView, didSelect message: Message) {
print("did select")
}
}
但编译器仍然抱怨 ChatContainerViewController 不符合协议,我不明白为什么?该函数具有完全相同的标题(我也尝试将 public 放在前面......没有帮助)。
任何帮助将不胜感激。
更新 我想到了。问题是我的项目和框架中有 Message 类,编译器不知道该选择哪一个。在前面添加 ModuleName (ModuleName.Message) 修复它。 :D
【问题讨论】:
-
您是否委托了您的 chatCollectionView 实例?
-
你是这个意思吗?让 chatVC = ChatViewController.viewController(); chatVC.delegate = 自我; chatContainerView.addSubviewFromViewController(chatVC, useAutoLayout: true)
-
我也有类似的问题。我的协议是 swift 编写的,并且不会自动添加到我的 framework.h 头文件中,所以我将 .swift 文件添加到公共头文件中,但仍然找不到。 (我得到的错误是“模块“frameworkName”中没有名为“protocolname”的类型。)对此的任何帮助将不胜感激。
标签: ios frameworks delegates swift3 protocols