私がやろうとしていることが可能かどうかはわかりませんが、望ましい結果が得られていないため、そうではないと思います.
私がしようとしている必要があるのは、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 では、次のコードを使用して、マスターと 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;
}
ご覧のとおり、ビューと RootViewController を変更するために、MainAppDelegate でメソッドを呼び出しています。SplitViewController は RootViewController でなければならないからです。これは方法です:
-(void)changeRootViewController:(UISplitViewController *)splitViewController{
[self.window addSubview:splitViewController.view];
self.window.rootViewController = splitViewController;
}
私は知っています、これは混乱のように見えます。そして、実行すると、SplitViewController が表示されないので、私がやろうとしていることは不可能だと思いますか? または私が間違っていることで?それがすべての場合、MainViewController の後に SplitViewController を表示するにはどうすればよいですか?
XCode4.4とiOS5を使用しています どうもありがとうございました