title: UINavigationController, and TabBarController programmatically (no storyboards)
body: <p>Currently, my AppDelegate file contains this code to establish the CustomTabBarController as the rootViewController:</p>
  
  <pre><code>window = UIWindow(frame: UIScreen.main.bounds)
  window?.makeKeyAndVisible()
  window?.rootViewController = CustomTabBarController()
  </code></pre>
  
  <p>I want my app to always have the CustomTabBarController on the bottom, but I want each tab to have a navigation controller. Here is the code I used to set up my tabBarController:</p>
  
  <pre><code>class CustomTabBarController: UITabBarController {
  override func viewDidLoad() {
  super.viewDidLoad()
  let vc1 = FirstViewController()
  let vc2 = SecondViewController()
  let vc3 = ThirdViewController()
  viewControllers = [vc1, vc2, vc3]
  }
  </code></pre>
  
  <p>Here is the code I used to set up my FirstViewController:</p>
  
  <pre><code>class ProfileViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
  
  func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -&gt; Int {
      return 2
  }
  
  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -&gt; UICollectionViewCell {
      let cell = collectionView.dequeueReusableCell(withReuseIdentifier: VCCellId, for: indexPath) as! firstVCCell
  
      return cell
  }
  }
  </code></pre>