像许多其他人一样,我今天开始编写一个实验,我将有两个视图控制器并能够在它们之间切换。我使用导航控制器让它工作,但我对实现有疑问。
在我的 TwoViewsAppDelegate 中,我定义了导航控制器和 rootViewController。
@interface TwoViewsAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UINavigationController *navigationController;
RootViewController *rootViewController;
}
并将它们设置如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
rootViewController = [[RootViewController alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
[window setRootViewController:navigationController];
[self.window makeKeyAndVisible];
return YES;
}
然后在我的 rootViewController 中,我定义了要切换到的 level2ViewController,以及我要按下以进行切换的按钮:
@interface RootViewController : UIViewController {
UIButton *theButton;
Level2ViewController *level2ViewController;
}
这是在 RootViewController.m 中按下按钮的响应:
-(void)level1ButtonPressed:(id)sender
{
if (level2ViewController == nil)
{
level2ViewController = [[Level2ViewController alloc] init];
}
[self.navigationController pushViewController:level2ViewController animated:YES];
}
问题是,如果有一个 level3ViewController,它必须被定义为 level2ViewController 的成员,等等。不管我想推入堆栈的多少视图控制器。
能够在一个地方定义所有视图控制器会很好,最好是应用程序委托。这可能吗?