在UITableViewController中,使用静态UITableViewCells,我试图创建一个可重复使用的网格,每行有一定数量的单元格,可变宽度和高度。
在Identifying and fixing auto layout issue from log output中,有人建议UICollectionViews是一种更好的方法。
使用静态UICollectionViewCells,根据https://robkerr.com/how-to-create-a-static-uicollectionview/,我已经能够设置一个集合视图网格。
但是,我很难在另一个UITableViewCell中添加第二个独立的网格。
我以为我可以为UICollectionView创建单独的IB出口,然后使用它来选择要使用的数据。
@IBOutlet weak var myCollectionView: UICollectionView!
@IBOutlet weak var endingsCV: UICollectionView!
extension NounsTVC: UICollectionViewDataSource
{
func collectionView( _ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
if self == myCollectionView
{
print("myCollectionView", cellIds.count)
return cellIds.count}
else if self == endingsCV
{
print("endingsCV", cellIds2.count)
return cellIds2.count
}
}
这会在没有找到Collection View重用标识符的情况下崩溃。
我已经尝试使用UICollectionView身份恢复ID,但我可能没有正确的语法或位置。
如何调用正确的数据源来配置UICollectionViewDataSource和UICollectionViewDelegateFlowLayout方法中的单元格?
我不确定这是否是最好的方法,但是如果我使用集合视图的实例化名称而不是'self',它就可以工作。
@IBOutlet weak var myCollectionView: UICollectionView!
@IBOutlet weak var endingsCV: UICollectionView!
extension NounsTVC: UICollectionViewDataSource
{
func collectionView( _ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
if myCollectionView == myCollectionView
{
print("myCollectionView", cellIds.count)
return cellIds.count}
else if endingsCV == endingsCV
{
print("endingsCV", cellIds2.count)
return cellIds2.count
} }