Я не знаю, возможно ли то, что я пытаюсь сделать, но поскольку у меня нет желаемых результатов, я думаю, что нет.
То, что я пытаюсь сделать, это вызвать SplitViewController из предыдущий ViewController, используя presentViewController.
Я знаю, что 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 я создаю SplitViewController с Master и DetailViewController, используя этот код:
-(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 никогда не отображается, поэтому я предполагаю, что то, что я пытаюсь сделать, невозможно? Или В чем я не прав? Если это все, что я могу сделать, чтобы показать SplitViewController после моего MainViewController?
Я использую XCode4.4 и iOS5 Большое спасибо.