首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UICollectionViewDelegate中的Swift 3警告

UICollectionViewDelegate中的Swift 3警告
EN

Stack Overflow用户
提问于 2017-01-17 20:49:45
回答 1查看 396关注 0票数 0

我使用的是Xcode8和Swift3。我在设计UICollectionView,想要动态设置高度和宽度,所以想要一些答案。在我得到这个解决方案的过程中(正确与否-我不知道):

代码语言:javascript
复制
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

    let Labell : UILabel = UILabel()
    Labell.text =   self.items[indexPath.item]
    let labelTextWidth =   Labell.intrinsicContentSize.width
    return CGSize(width: labelTextWidth + 20, height: 35)

}

但是这个答案是在swift 2.0中的,给出这个答案的人声称它已经解决了。我将其粘贴到Xcode中,并更改了Xcode建议我的一些内容。

现在我收到以下警告:

代码语言:javascript
复制
instance method 'collectionView:layout:sizeForItemAtIndexPath:)' nearly matches optional requirement 'collection(_:willDisplaySupplementaryView:forElement:at:)' of protocol 'UICollectionViewDelegate'

Xcode建议我2个解决方案1)在func关键字前添加private 2)在fun关键字前面添加@nonobjc

我尝试了这两种解决方案,它抑制了警告,但没有一个是永远不会调用的。我尝试了设置断点,并尝试了许多方法。如果有人能把我从这个坑里拉出来的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-17 20:58:12

UICollectionViewDelegate没有sizeForItemAtIndexPath委托方法。

你可能要找的是

代码语言:javascript
复制
optional func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize

它可以在UICollectionViewDelegateFlowLayout协议上找到。

尝试用以下代码替换您的代码:

代码语言:javascript
复制
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    let Labell : UILabel = UILabel()
    Labell.text =   self.items[indexPath.item]
    let labelTextWidth =   Labell.intrinsicContentSize.width
    return CGSize(width: labelTextWidth + 20, height: 35)

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41697674

复制
相关文章

相似问题

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