Swift 3 泛型 : issue with setting UICollectionViewDatasource & Delegate for a UICollectionView inside UITableViewCell

标签 swift uitableview generics uicollectionview swift3

我正在将我的应用程序转换为 Swift 3。我偶然发现了一个问题,即使用一种干净的方式为 UITableViewCell 中的 UICollectionView 设置数据源和委托(delegate),描述 here .

代码如下:

func setCollectionViewDataSourceDelegate<D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>>
(_ dataSourceDelegate: D, forRow row: Int) {

collectionView.delegate = dataSourceDelegate
collectionView.dataSource = dataSourceDelegate
collectionView.tag = row
collectionView.reloadData()}

它会发出警告,说明:

'protocol<...>' composition syntax is deprecated; join the protocols using '&'

当我接受建议的解决方案时,它会更改 D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>进入 D: (UICollectionViewDatasource & UICollectionViewDelegate)调用,而是抛出一个错误:

Expected a type name or protocol composition restricting 'D'

如果比我更了解 Swift 3 泛型的人可以提出解决方案,我将不胜感激。

最佳答案

无需使用protocol<>因为编译器已经知道了。只需像这样加入协议(protocol):D: UITableViewDelegate & UITableViewDataSource

关于Swift 3 泛型 : issue with setting UICollectionViewDatasource & Delegate for a UICollectionView inside UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40702791/

相关文章:

json - 从 Swift 中选定的下拉选项中获取数据

ios - Swift:验证用户名输入

swift - 如何在 UITableViewCell swift 中获取 UIView 的正确宽度

ios - 自定义 UITableViewCell 的高度

ios - 使用 insertRows(atPaths) 方法插入行时,自定义单元格未正确绘制

java - Java使用反射创建泛型参数化类

ios - 在运行时使用图像设置 UIImageView 会导致它不遵守约束

ios - 如何在表格 View 单元格内的 ImageView 上设置 cornerRadius

c# - 将对象转换为泛型

java - 我如何实现通用 BST?