我知道有很多问题可以回答这个问题,但我的情况略有不同。如果您使用的是故事板,大多数答案都会告诉我删除这行代码:
collectionView?.registerClass(UICollectionViewCell.self,forCellWithReuseIdentifier:cellId)
但我不能这样做,因为我使用的是故事板和非故事板。
我从程序化推送视图控制器(故事板控制器 - 标签栏控制器)转换到此集合视图控制器(非故事板视图),如下所示:
func showChatLogController(user: User) {
let chatLogController = ChatLogController(collectionViewLayout: UICollectionViewLayout())
chatLogController.user = user
chatLogController.hidesBottomBarWhenPushed = true
navigationController?.pushViewController(chatLogController, animated: true)
}
我的集合视图代码似乎是写的,我不知道问题是什么。如果您需要在此处查看集合视图代码,请执行以下操作:
let cellId = "cellId"
override func viewDidLoad() {
super.viewDidLoad()
collectionView?.backgroundColor = UIColor.whiteColor()
collectionView?.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: cellId)
setUpInputComponents()
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(SignUpViewController.dismissKeyboard))
view.addGestureRecognizer(tap)
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellId, forIndexPath: indexPath)
cell.backgroundColor = UIColor.blueColor()
return cell
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSize(width: view.frame.height, height: 80)
}
由于某种原因,它不显示细胞。我不知道为什么。任何帮助将不胜感激。
PS:我不知道这是否很重要但是要进入集合视图控制器,我来自标签栏控制器。
答案 0 :(得分:2)
将您的收藏视图datasource
和delegate
设置为viewDidload
中的自我,
yourCollectionView.dataSource = self
yourCollectionView.delegate = self
答案 1 :(得分:0)
答案 2 :(得分:0)
我最近遇到此问题,发现我错误地实例化了Collection View控制器。我以前将其实例化为:
let CollectionViewController = CollectionViewController(collectionViewLayout: UICollectionViewLayout())
何时应该:
let CollectionViewController = CollectionViewController(collectionViewLayout: UICollectionViewFlowLayout())