Le *_*ale 13 ios uicollectionview swift
UICollectionView在屏幕外时,我的源数据有时会发生变化.要在它返回时更新它,我写道CollectionViewController:
override func viewWillAppear(animated: Bool) {
self.collectionView!.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
......这样可行,但我从来不需要更新一个或两个以上的单元格UICollectionView,所以我认为如果用以下代码替换上面的版本会更好:
override func viewWillAppear(animated: Bool) {
self.collectionView!.reloadItemsAtIndexPaths(myArrayOfIndexPaths)
}
Run Code Online (Sandbox Code Playgroud)
...但是当我这样做时,Xcode给了我一个错误说:
postfix'!'的操作数 应该有可选类型,删除'!'".
当我删除'!'时,它表示UICollectionView没有名为的成员reloadItemsAtIndexPaths.我究竟做错了什么?
Val*_*tin 20
从您的代码看,您最近已将collectionView声明为Optional(带?),并可能使用@IBOutlet将其链接到您的故事板.要解决您的问题,您应该删除?来自 :
@IBOutlet var collectionView: UICollectionView?
并用以下代替:
@IBOutlet var collectionView: UICollectionView!
这样你就告诉编译器你的collectionView肯定存在(因为你已经从故事板中链接了它).
或者,您可以通过执行以下操作绑定collectionView:
if let collectionView = collectionView {
collectionView.reloadItemsAtIndexPaths(myArrayOfIndexPaths)
}
Run Code Online (Sandbox Code Playgroud)
小智 6
Swift 4重新加载部分中的所有项目
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
var indexPaths: [NSIndexPath] = []
for i in 0..<collectionView!.numberOfItems(inSection: 0) {
indexPaths.append(NSIndexPath(item: i, section: 0))
}
collectionView?.reloadItems(at: indexPaths as [IndexPath])
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41255 次 |
| 最近记录: |