私は SplitViewController ベースのアプリを持っています。これは、他の UIViewController を呼び出して、詳細セクションに置き換えて表示されます...
パラメータ、情報、オブジェクトを送信すると、MasterViewController のセグエを使用してすべてが正常に機能します
しかし、私の UIViewControllers のいくつかは、Segues を使用して他の UIViewControllers とやり取りするため、それらを正常に動作させるには、それらを UINavigationController 内に埋め込む必要があります。
私の質問は:
セグエが実行されているときに UINavigationController を segue.destinationViewController に追加する方法:
- masterViewController からパラメータを渡す
- Segues を使用して UIViewControllers が他の ViewControllers とやり取りできるようにする
私は解決策を考えました: -MasterViewControllerでカスタムデリゲートまたはプロトコルを作成することによるパラメータの問題 -UIViewControllersを埋め込むことにより、ストーリーボードのデザインモードでそれらを追加することによるUINavigationControllersの問題
しかし、縦向きモードでMasterViewControllerを表示するボタンを表示するために、UISplitViewControllerのデリゲートをdestinationViewControllerに設定する必要があります...
私の ViewController を保持する UINavigationControllers を持つ prepareForSegue メソッドでそれを設定した場合、代わりに UISplitViewController のデリゲートを UINavigationController に設定します。
助けてくれてありがとう
編集:これは私がそれを解決するために見つけた方法でした:
最初に IBAction をボタンに割り当てました。デバイスが iPad でない場合は、通常のセグエを実行します...
- (IBAction)openExecutives:(id)sender {
if ([[[UIDevice currentDevice]model] hasPrefix:@"iPad"]) {
UsersListVC *rightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"UsersListVC"];
[self showSplitViewController:rightViewController];
}
else
[self performSegueWithIdentifier:@"viewSceneExecutives" sender:self];
}
これは、カスタムの詳細を使用して SplitView を作成するために開発した関数です...
-(void)showSplitViewController:(id)rightViewController{
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"iPad2" bundle: nil];
UINavigationController *leftNavController;
UINavigationController *rightNavController;
MainMenuVC *leftViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"MainMenuVC"];
leftNavController = [[UINavigationController alloc] initWithRootViewController:leftViewController];
rightNavController = [[UINavigationController alloc] initWithRootViewController:rightViewController];
leftNavController.toolbarHidden = FALSE;
rightNavController.toolbarHidden = FALSE;
UISplitViewController *splitViewController = [[UISplitViewController alloc] init];
splitViewController.viewControllers = [NSArray arrayWithObjects:leftNavController, rightNavController, nil];
splitViewController.delegate = rightViewController;
self.view.window.rootViewController = splitViewController;
}
私がしたことは、パラメーター(UIViewController)を必要とする関数を作成することにより、最初からsplitViewControllerを再描画することだけです