我有一个基于 SplitViewController 的应用程序,它调用其他 UIViewController 以在详细信息部分通过替换显示它们...
我通过使用 MasterViewController 的 segues 向他们发送参数、信息、对象和一切正常
但是我的一些 UIViewControllers 通过使用 Segues 与其他 UIViewControllers 交互,因此,为了使它们正常工作,我需要将它们嵌入到 UINavigationController
我的问题是:
执行 segue 时如何将 UINavigationController 添加到我的 segue.destinationViewController:
- 从 masterViewController 传递我的参数
- 允许我的 UIViewControllers 通过使用 Segues 与其他 ViewControllers 交互
我想到了一个解决方案:-通过在 MasterViewController 中创建自定义委托或协议来解决参数问题
但我需要将 UISplitViewController 的委托设置为我的destinationViewController,以显示以纵向模式显示 MasterViewController 的按钮...
如果我在 prepareForSegue 方法中设置它,让 UINavigationControllers 持有我的 ViewControllers,我会将 UISplitViewController 的委托设置为 UINavigationController
在此先感谢您的帮助
编辑:这是我找到解决它的方法:
首先,我将 IBAction 分配给按钮,如果我的设备不是 iPad,它将执行正常的 segue...
- (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];
}
这是我为使用自定义详细信息创建拆分视图而开发的功能...
-(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