Swift 3 UICollectionViewDelegate 警告
Swift 3 Warning in UICollectionViewDelegate
我正在使用 Xcode 8 和 Swift 3。我正在设计 UICollectionView 并希望动态设置高度和宽度,因此需要一些答案。在我得到这个解决方案的路上(正确与否 - 我不知道):
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 建议我的一些内容。
现在我收到以下警告:
instance method 'collectionView:layout:sizeForItemAtIndexPath:)' nearly matches optional requirement 'collection(_:willDisplaySupplementaryView:forElement:at:)' of protocol 'UICollectionViewDelegate'
Xcode 建议我 2 个解决方案
1) 在 func 关键字之前添加 private
2) 在 fun 关键字前添加@nonobjc
我尝试了这两种解决方案,它抑制了警告,但 none 从未调用上面的方法。我尝试设置断点并尝试了很多方法。如果有谁能把我从这个坑里拉出来
UICollectionViewDelegate
没有 sizeForItemAtIndexPath
委托方法。
您可能正在寻找的是
optional func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
可以在 UICollectionViewDelegateFlowLayout
协议中找到。
尝试用以下代码替换您的代码:
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)
}
我正在使用 Xcode 8 和 Swift 3。我正在设计 UICollectionView 并希望动态设置高度和宽度,因此需要一些答案。在我得到这个解决方案的路上(正确与否 - 我不知道):
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 建议我的一些内容。
现在我收到以下警告:
instance method 'collectionView:layout:sizeForItemAtIndexPath:)' nearly matches optional requirement 'collection(_:willDisplaySupplementaryView:forElement:at:)' of protocol 'UICollectionViewDelegate'
Xcode 建议我 2 个解决方案 1) 在 func 关键字之前添加 private 2) 在 fun 关键字前添加@nonobjc
我尝试了这两种解决方案,它抑制了警告,但 none 从未调用上面的方法。我尝试设置断点并尝试了很多方法。如果有谁能把我从这个坑里拉出来
UICollectionViewDelegate
没有 sizeForItemAtIndexPath
委托方法。
您可能正在寻找的是
optional func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
可以在 UICollectionViewDelegateFlowLayout
协议中找到。
尝试用以下代码替换您的代码:
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)
}