2017-09-25 136 views
1

我有一个viewControl里面有一个collectionView。我很确定,我已经配置好所有东西,但它没有渲染任何单元格。我已经添加了相应的委托和数据源和双重检查,以查看是否将数据加载,它是,但细胞不被填充CollectionView没有注册单元

import UIKit 
import UIKit 
import Alamofire 
import AlamofireNetworkActivityIndicator 
import SwiftLocation 
import CoreLocation 
import AMScrollingNavbar 

class NewHomeFeedControllerViewController: UIViewController { 
    let detailView = EventDetailViewController() 
    var allEvents = [Event]() 
    let customCellIdentifier1 = "customCellIdentifier1" 
    var grideLayout = GridLayout(numberOfColumns: 2) 
    let refreshControl = UIRefreshControl() 
    var newHomeFeed: NewHomeFeedControllerViewController? 
     let paginationHelper = PaginationHelper<Event>(serviceMethod: PostService.showEvent) 
    lazy var dropDownLauncer : DropDownLauncher = { 
     let launcer = DropDownLauncher() 
     launcer.newHomeFeed = self 
     return launcer 
    }() 

    // 1 IGListKit uses IGListCollectionView, which is a subclass of UICollectionView, which patches some functionality and prevents others. 
    let collectionView: UICollectionView = { 
     // 2 This starts with a zero-sized rect since the view isn’t created yet. It uses the UICollectionViewFlowLayout just as the ClassicFeedViewController did. 
     let view = UICollectionView(frame: CGRect.zero, collectionViewLayout: UICollectionViewFlowLayout()) 
     // 3 The background color is set to white 
     view.backgroundColor = UIColor.white 
     return view 
    }() 
    func handleDropDownMenu(){ 
     dropDownLauncer.showDropDown() 
    } 
    func configureCollectionView() { 
     // add pull to refresh 
     refreshControl.addTarget(self, action: #selector(reloadHomeFeed), for: .valueChanged) 
     collectionView.addSubview(refreshControl) 
    } 
    func reloadHomeFeed() { 
     self.paginationHelper.reloadData(completion: { [unowned self] (events) in 
      self.allEvents = events 

      if self.refreshControl.isRefreshing { 
       self.refreshControl.endRefreshing() 
      } 

      DispatchQueue.main.async { 
       self.collectionView.reloadData() 
      } 
     }) 
    } 

    func categoryFetch(dropDown: DropDown){ 
     navigationItem.title = dropDown.name 
     paginationHelper.category = dropDown.name 
     configureCollectionView() 
     reloadHomeFeed() 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.addSubview(collectionView) 
     collectionView.contentInset = UIEdgeInsetsMake(15, 0, 0, 0) 
     navigationItem.title = "Home" 
     collectionView.dataSource = self 
     collectionView.delegate = self 
     collectionView.collectionViewLayout = grideLayout 
     collectionView.reloadData() 
     collectionView.register(CustomCell.self, forCellWithReuseIdentifier: customCellIdentifier1) 
     // self.navigationItem.hidesBackButton = true 
     let backButton = UIBarButtonItem(image: UIImage(named: "menu"), style: .plain, target: self, action: #selector(handleDropDownMenu)) 
     self.navigationItem.leftBarButtonItem = backButton 
     configureCollectionView() 
     reloadHomeFeed() 
     // Do any additional setup after loading the view. 
    } 
    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 

     if let navigationController = self.navigationController as? ScrollingNavigationController { 
      navigationController.followScrollView(self.collectionView, delay: 50.0) 
     } 
    } 
    override func viewDidDisappear(_ animated: Bool) { 
     super.viewDidDisappear(animated) 

     if let navigationController = navigationController as? ScrollingNavigationController { 
      navigationController.stopFollowingScrollView() 
     } 
    } 

    func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool { 
     if let navigationController = navigationController as? ScrollingNavigationController { 
      navigationController.showNavbar(animated: true) 
     } 
     return true 
    } 

    override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
     super.viewWillTransition(to: size, with: coordinator) 
     grideLayout.invalidateLayout() 
    } 
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     return true 
    } 
} 


extension NewHomeFeedControllerViewController: UICollectionViewDataSource { 
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return allEvents.count 
    } 
    // The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath: 
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

     let customCell = collectionView.dequeueReusableCell(withReuseIdentifier: customCellIdentifier1, for: indexPath) as! CustomCell 
     let imageURL = URL(string: allEvents[indexPath.item].currentEventImage) 
     print(imageURL ?? "") 
     customCell.sampleImage.af_setImage(withURL: imageURL!) 
     return customCell 
    } 
} 


extension NewHomeFeedControllerViewController: UICollectionViewDelegateFlowLayout{ 
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
     if indexPath.item == 0 || indexPath.item == 1 { 
      return CGSize(width: view.frame.width, height: grideLayout.itemSize.height) 
     }else{ 
      return grideLayout.itemSize 
     } 
    } 
} 

任何想法可能是什么回事?

+1

我的意思是说字符串不是问题的关键变量 –

+0

对不起我的不好,只是看到它。 – chirag90

+0

所以,任何想法然后@ chirag90 –

回答

0

对不起你们忘了添加该

override func viewDidLayoutSubviews() { 
     super.viewDidLayoutSubviews() 
     collectionView.frame = view.bounds 
    } 

哈哈感谢您的帮助

+0

这就是这就是为什么它不提供FYI @mag_zbc的答案 –