我在View控制器中有一个UICollectionView(名为aCollection),我使用UICollectionReusableView在集合视图的顶部显示标题
我在UICollectionReusableView中还有另一个UICollectionView(名为bCollection)。我需要在这里显示顶级用户列表。但是当我试图从故事板连接插座时,我收到了错误
我知道如何在集合视图中重新加载数据
self.aCollection.reloadData()
我的问题是如何连接bCollection outlet以及如何重新加载bCollection以显示来自Web服务的用户列表?
答案 0 :(得分:1)
要取bCollection
的出口,您需要创建UICollectionReusableView
的子类。
示例:强>
UIViewController
包含aCollection
:
class ViewController: UIViewController, UICollectionViewDataSource
{
@IBOutlet weak var aCollectionView: UICollectionView!
override func viewDidLoad()
{
super.viewDidLoad()
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
return collectionView.dequeueReusableCell(withReuseIdentifier: "aCell", for: indexPath)
}
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView
{
return (collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "reusableView", for: indexPath) as! ReusableView)
}
}
UICollectionReusableView
包含bCollection
:
class ReusableView: UICollectionReusableView, UICollectionViewDataSource
{
@IBOutlet weak var bCollectionView: UICollectionView!
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
return collectionView.dequeueReusableCell(withReuseIdentifier: "bCell", for: indexPath)
}
}
界面截图
修改强>
要重新加载bCollection
:
您需要引用您正在使用的reusableView
。你使用它的方式ReusableView()
是不对的。
像这样使用:
var reusableView: ReusableView?
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView
{
self.reusableView = (collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "reusableView", for: indexPath) as! ReusableView) //Storing the reference to reusableView
return self.reusableView!
}
现在,要重新加载bCollection
,
self.reusableView?.bCollectionView.reloadData()
答案 1 :(得分:0)
由于您的UICollectionView
(bCollection
)位于UICollectionReusableView
内,您只能连接到UICollectionReusableView
的课程。因此,我相信您可能需要为UICollectionReusableView
创建自定义类,并将其分配到故事板中,并将bCollection
的插座连接到该自定义类