如何正确显示两个集合视图

时间:2017-04-24 16:01:47

标签: ios swift uicollectionview jsqmessagesviewcontroller

我的视图控制器(JSQMessagesVIewController)中有消息的集合视图,我有另一个导航栏的集合视图。我试图实现这两种不同的方式,所以它们都出现了,但似乎无论我如何设置它,它必须是一个或另一个 - 没有两个集合视图可以同时出现的情况。

以下是两种不同的方法:

  1. 在集合视图方法中添加if/else语句。例如:

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    
    if collectionView == navBarCollectionView {
        return avatarDictionary.count
    } else {
        return messages.count
    }
    }
    
  2. 放置集合视图方法&在单独的类中导航栏集合的所有代码,然后从那里将其添加到聊天控制器导航栏。

  3. 然而,第一种方法导致只显示导航栏集合视图,隐藏消息。如果我删除了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()
    

    如果需要我可以发布更多代码,但是如果有人能看到这里出了什么问题,你能告诉我吗?

0 个答案:

没有答案