rootViewControllerとしてUINavigationControllerがあります。これにはUIViewControllerが含まれています(この説明のためにプロジェクトと呼びます)。プロジェクトにはボタンがあり、クリックするとUISplitViewControllerをロードします。これは便利な機能ですが、できれば下から上にスライドさせます。
UISplitViewControllerには、プロジェクトを再表示しているUISplitViewControllerを削除する[閉じる]ボタンがあります。
私が読んだことから、UISPlitViewControllersはrootViewControllersでなければなりません。それを念頭に置いて、これまでの私のコードは次のとおりです。
AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
...
// LOAD THE PROJECTS PANEL ROOT VIEW CONTROLLER INTO THE WINDOW
ProjectsListViewController *projects = [[ProjectsListViewController alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:projects];
[window setRootViewController:navigationController];
[window makeKeyAndVisible];
return YES;
}
ProjectsViewController
-(IBAction)loadDetails
{
ProjectNavigationController *projectNavPanel = [[ProjectNavigationController alloc] init];
ProjectDetailController *projectDetailPanel = [[ProjectDetailController alloc] init];
ProjectSplitViewController *splitRootController = [[ProjectSplitViewController alloc] init];
[splitRootController setViewControllers:[NSArray arrayWithObjects:projectNavPanel, projectDetailPanel, nil]];
[[self view] removeFromSuperview];
[[appDelegate window] setRootViewController:splitRootController];
}
UISplitViewController Naviagaion
- (void)loadProjects
{
// LOAD THE PROJECTS LIST BACK INTO VIEW
ProjectsListViewController *projectsList = [[ProjectsListViewController alloc] init];
[[[self parentViewController] view] removeFromSuperview];
[[appDelegate window] setRootViewController:projectsList];
}
今、私はこれが間違っていることを知っています、そして当然のことながら、それは他の方法に悪影響を及ぼしています。実際、これを入力すると、プロジェクトページが起動時にnavigationControllerに読み込まれますが、splitViewControllerが閉じられるとウィンドウに直接配置されることに気付きました。誰かがこれを達成する正しい方法を説明することによって私を助けることができますか?
ありがとう