I am wondering, that how to get navController from AppDelegate = [[UIApplication sharedApplication] delegate]
in the iPhone programming. e.g., in other viewController where we reference to the AppDelegate.
In the applicationDelegate.h we have:
UINavigationController *navController;
And the following in applicationDelegate.m
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview: navController.view];
[window makeKeyAndVisible];
}
Is there anyway to get the navController from the mainWindow:
UIWindow *mainWindow = [appDelegate window];
If this other UIViewController is contained in the UINavigationController, you can simply call:
from the UIViewController.
Otherwise, you can set UINavigationController as a property in the AppDelegate.
Then access
appDelegate.navController
.Or, you can set the UINavigationController as window's rootViewController:
And call from anywhere:
You can make the navController a property
Then just access it from your appdelegate
You can make the
navController
as a property of your delegate class. sample below:In applicationDelegate.h
In applicationDelegate.m
then you can use the following code to get the navController in other classes (Assume your delegate class is
MyApplicationDelegate
):If you are beginer and learner, the navigation controller is shared in whole application which will just prepare the "stack" of your app's viewcontrollers, so you can access the navigationcontroller in any viewcontroller(Only if that controller has been pushed) through out the app. When you push any controller it will added to the "stack" of navigation controller.
You can access the navigation controller with the self object of that viewcontroller itself.
Go through with the link will give complete knowledge of navigation anatomy.
http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html
No extra properties needed, available almost anywhere in your application using this macro definition:
When you put the macro at the top of your source or in a .h header file that you import into your source, then you can start using mainNavController as if it were a local variable.
For example:
Or without the macro, directly in code:
You can use this code almost anywhere, which is handy if you're working inside a class and you can't access a ViewController directly.