我的视图控制器(JSQMessagesVIewController)中有消息的集合视图,我有另一个导航栏的集合视图。我试图实现这两种不同的方式,所以它们都出现了,但似乎无论我如何设置它,它必须是一个或另一个 - 没有两个集合视图可以同时出现的情况。
以下是两种不同的方法:
在集合视图方法中添加if/else
语句。例如:
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if collectionView == navBarCollectionView {
return avatarDictionary.count
} else {
return messages.count
}
}
放置集合视图方法&在单独的类中导航栏集合的所有代码,然后从那里将其添加到聊天控制器导航栏。
然而,第一种方法导致只显示导航栏集合视图,隐藏消息。如果我删除了if/else
语句,则消息会重新出现(尽管很明显,此时导航栏集合不会显示)。
使用第二种方法,消息显示但集合视图不显示。
以下是设置导航栏集合视图的代码:
let navBarCollectionView: UICollectionView = UICollectionView(frame: CGRect(x: CGFloat(70), y: CGFloat(0), width: CGFloat(500), height: CGFloat(40)), collectionViewLayout: UICollectionViewFlowLayout.init())
在viewDidLoad
:
let layout:UICollectionViewFlowLayout = UICollectionViewFlowLayout.init()
navBarCollectionView.setCollectionViewLayout(layout, animated: true)
navBarCollectionView.backgroundColor = UIColor.clear
navBarCollectionView.register(NavBarCell.self, forCellWithReuseIdentifier: "cell")
navBarCollectionView.delegate = self
navBarCollectionView.dataSource = self
layout.itemSize = CGSize(width: CGFloat(40), height: CGFloat(40))
layout.scrollDirection = .horizontal
self.navigationController?.navigationBar.addSubview(navBarCollectionView)
navBarCollectionView.reloadData()
如果需要我可以发布更多代码,但是如果有人能看到这里出了什么问题,你能告诉我吗?