我不知道我想要做的事情是否可能,但因为我没有想要的结果,我猜不是。
我正在尝试并且需要做的是使用presentViewController 从以前的ViewController 调用SplitViewController。
我知道,SplitViewController 必须是 rootViewController,但我需要探索最可能的选项来实现我需要做的事情。
我有一个带按钮的 MainMenu,对于每个按钮,我都需要调用一个 SplitViewController。首先,如何做到这一点?
我要做的是:首先,在 AppDelegate 中,我调用 MainMenu,并添加为子视图和其他内容:
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[window addSubview:self.mainMenu.view];
[self.mainMenu presentModalViewController:self.firstMenu animated:NO];
[self.window makeKeyAndVisible];
return YES;
}
然后,在 MainMenu 中,我在模态视图中调用 SecondViewController,使用以下代码:
SecondViewController *secV = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
secV.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:secV animated:YES];
在这个 SecondViewController 中,我正在使用以下代码创建具有 Master 和 DetailViewController 的 SplitViewController:
-(void)viewDidLoad{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
UISplitViewController *splitViewController = [[UISplitViewController alloc]init];
SecondMenuViewController *secMenu = [[SecondMenuViewController alloc]init];
UINavigationController *navLef = [[UINavigationController alloc]init];
[navLef pushViewController:secMenu animated:NO];
SecondMainViewController *secMain = [[SecondMainViewController alloc]init];
UINavigationController *navRig = [[UINavigationController alloc]init];
[navRig pushViewController:secMain animated:NO];
splitViewController.delegate = secMain;
splitViewController.viewControllers = [NSArray arrayWithObjects:navLef, navRig, nil];
MainAppDelegate *mainApp = [[MainAppDelegate alloc]init];
[mainApp changeRootViewController:splitViewController];
navRig = nil;
navLef = nil;
secMain = nil;
secMenu = nil;
splitViewController = nil;
}
如您所见,我在 MainAppDelegate 中调用一个方法来更改视图和 RootViewController,因为 SplitViewController 必须是 RootViewController。这是方法:
-(void)changeRootViewController:(UISplitViewController *)splitViewController{
[self.window addSubview:splitViewController.view];
self.window.rootViewController = splitViewController;
}
我知道,这看起来像一团糟。当我运行时,SplitViewController 从不显示,所以我假设,我想要做的事情是不可能的?还是我错了?如果它是一切,我该怎么做才能在我的 MainViewController 之后显示一个 SplitViewController?
我正在使用 XCode4.4 和 iOS5 非常感谢