public void SetViewControllers(UIViewController[] newViewControllers)
        {
            if (newViewControllers.Length < 2)
                throw new Exception("MHTabBarController requires at least two view controllers");

            UIViewController oldSelectedViewController = selectedViewController;

            // Remove the old child view controllers.
            if (viewControllers != null) {
                foreach (var viewController in viewControllers)
                {
                    viewController.WillMoveToParentViewController(null);
                    viewController.RemoveFromParentViewController();
                }
            }

            viewControllers = newViewControllers.ToArray();

            // This follows the same rules as UITabBarController for trying to
            // re-select the previously selected view controller.
            int newIndex = Array.IndexOf (viewControllers, oldSelectedViewController);
            if (newIndex != -1)
                selectedIndex = newIndex;
            else if (newIndex < viewControllers.Length)
                selectedIndex = newIndex;
            else
                selectedIndex = 0;

            // Add the new child view controllers.
            foreach (var viewController in viewControllers)
            {
                AddChildViewController(viewController);
                viewController.DidMoveToParentViewController(this);
            }

            if (IsViewLoaded)
                ReloadTabButtons();
        }