Не знам дали това, което се опитвам да направя, е възможно, но тъй като нямам желаните резултати, предполагам, че не.
Това, което се опитвам и трябва да направя, е да извикам 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 Благодаря ви много