Удалить это
collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
при добавлении collectionView в IB
@IBOutlet weak var collectionView: UICollectionView!
тогда не создавайте его заново, так как он загружен зарегистрированной ячейкой
Если соединение идет не так, как должно, тогда
collectionView = UICollectionView(frame:self.view.bounds, collectionViewLayout: layout)
и вам нужно будет зарегистрировать ячейку программно или использовать UICollectionViewController
Редактировать: в AppDelegate
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "vcID")
window?.rootViewController = vc