如何从AppDelegate获取navController.

ram*_*amo 6 iphone objective-c uinavigationcontroller uiapplicationdelegate ios

我想知道,如何从AppDelegate = [[UIApplication sharedApplication] delegate]iPhone编程中获取navController .例如,在我们引用AppDelegate的其他viewController中.

在applicationDelegate.h中,我们有:

UINavigationController *navController;
Run Code Online (Sandbox Code Playgroud)

以及applicationDelegate.m中的以下内容

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

   [window addSubview: navController.view];
   [window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)

无论如何从mainWindow获取navController:

UIWindow *mainWindow = [appDelegate window];
Run Code Online (Sandbox Code Playgroud)

Luc*_*ien 17

如果其他UIViewController包含在UINavigationController中,您只需调用:

UINavigationController *navController = self.navigationController;
Run Code Online (Sandbox Code Playgroud)

来自UIViewController.

否则,您可以将UINavigationController设置为AppDelegate中的属性.

// AppDelegate.h
@property (nonatomic, strong) UINavigationController *navController;
Run Code Online (Sandbox Code Playgroud)

然后访问appDelegate.navController.

或者,您可以将UINavigationController设置为窗口的rootViewController:

[window setRootViewController:navController];
Run Code Online (Sandbox Code Playgroud)

从任何地方打电话:

UINavigationController *navController = window.rootViewController;
Run Code Online (Sandbox Code Playgroud)