title: Setting common values for viewControllers in UITabBarController with moreNavigationController
body: <p>I have 'n' ViewControllers, all taking a common variable 'cv1', I would like to set this cv1 before the controllers are loaded. 
  Everything is fine till I set only 4 controllers, (i.e) without More tab item. and once I introduce more controllers, delegate "tabBarController:didSelectViewController" doesn't trigger for the modules in UIMoreNavigationController.</p>
  
  <p>So I tried setting the UINavigationController delegate for my TabBarController Class and handled the other module tabItem selection like </p>
  
  <pre><code>func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
  
      if navigationController != self.moreNavigationController
      {
          //navigation happening in some other tab Item
          return
      }
  
      if navigationController.viewControllers.count != 2
      {
          //The first controller of the more tabItem will be MoreViewController, followed by our desired controller in the navigation stack
          return
      }
  
      guard let selectedController:MyTabItemViewController = self.getTopViewController(from: viewController) else {
  
          print("***WARNING*** Selected controller doesn't seem to expect  info :\(String(describing: selectedViewController))")
          return
  
      }
  
      selectedController.sp = self.sp
      selectedController.sb = self.sb
  } 
  </code></pre>
  
  <p>I am able to get the ViewController instance, but the <code>viewDidLoad</code> method gets called before <code>UINavigationController</code>'s <code>willShow</code> method, I would like to set the variables before the <code>viewDidLoad</code> method as the UI structuring and data fetch depends on this variable.</p>