首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift协议语法,其中Self:既是UICollectionViewDataSource也是UICollectionViewDelegate

Swift协议语法,其中Self:既是UICollectionViewDataSource也是UICollectionViewDelegate
EN

Stack Overflow用户
提问于 2020-01-26 00:00:26
回答 1查看 47关注 0票数 0

我正在尝试创建一个协议,该协议将自动向符合的任何UIViewController添加一个UICollectionView。

下面是我当前的代码:

代码语言:javascript
复制
protocol ReusableNavigation {
    var actionContainer: UIView! { get }
    func addActionMenuCollection()
}

extension ReusableNavigation where Self: UICollectionViewDataSource {
    func addActionMenuCollection() {
        let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()

        layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)
        layout.itemSize = CGSize(width: 60, height: 60)
        let actionMenu:UICollectionView = UICollectionView(frame: self.actionContainer.frame, collectionViewLayout: layout)

        actionMenu.dataSource = self
        actionMenu.delegate = self
        actionMenu.register(UINib(nibName: "ActionCell", bundle: nil), forCellWithReuseIdentifier: "actionCell")
        actionMenu.semanticContentAttribute = UISemanticContentAttribute.forceRightToLeft
        self.actionContainer.addSubview(actionMenu)
    }
}

显然,当我尝试设置actionMenu委托时,上面的代码错误,因为self只是一个UICollectionViewDataSource

我无论如何也找不出self等于UICollectionViewDataSource和UICollectionViewDelegate的协议扩展的语法。

有可能吗?有什么想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-26 00:20:07

添加约束条件,用逗号分隔

代码语言:javascript
复制
extension ReusableNavigation where Self: UICollectionViewDataSource,  Self: UICollectionViewDelegate { ...

或“与”号连接

代码语言:javascript
复制
extension ReusableNavigation where Self: UICollectionViewDataSource & UICollectionViewDelegate
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59910926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档