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(); }