To remove the Edit button from the "More" Navigation controller in a UITabBarController as shown.
First assign a delegate class to the instance of the MoreNavigatioController in the AppDelegate class
tabBarController.MoreNavigationController.Delegate = new MoreNavigationControllerDelegate();
tabBarController.MoreNavigationController.Delegate = new MoreNavigationControllerDelegate();
public partial class AppDelegate : UIApplicationDelegate { TabBarController tabBarController; // This method is invoked when the application has loaded its UI and its ready to run public override bool FinishedLaunching (UIApplication app, NSDictionary options) { // Create the tabs tabBarController = new TabBarController (); tabBarController.MoreNavigationController.Delegate = new MoreNavigationControllerDelegate(); // Create the main window and add the navigation controller as a subview window = new UIWindow (UIScreen.MainScreen.Bounds); window.AddSubview(tabBarController.View); window.MakeKeyAndVisible (); return true; } // This method is required in iPhoneOS 3.0 public override void OnActivated (UIApplication application) { } }
- Add a new class "MoreNavigationControllerDelegate" to the project.
- This class should implement "UINavigationControllerDelegate".
- Add an override method "WillShowViewController" to this class - This method is called whenever its time to load the MoreNavigation view controller.
- Set the RightBarButtonItem to null in this method.
The following code in "WillShowViewController" method will hide "Edit" button in the "More" controller of UITabBarController.
public class MoreNavigationControllerDelegate : UINavigationControllerDelegate { public MoreNavigationControllerDelegate () : base() { } public override void WillShowViewController (UINavigationController navigationController, UIViewController viewController, bool animated) { if(navigationController.NavigationBar.TopItem.Title == "More") navigationController.NavigationBar.TopItem.RightBarButtonItem = null; } }
Note- I have the condition if(navigationController.NavigationBar.TopItem.Title == "More"), since I still want to show the right bar button when I select the "Motivation", "Tips" and "Glossary" view controller as shown below.
No comments:
Post a Comment