Ios8 从UISPlitViewController主视图到详细视图进行模态表示

Ios8 从UISPlitViewController主视图到详细视图进行模态表示,ios8,Ios8,我在UISplitViewController的主视图控制器中有一个加号按钮,我想在我的详细视图中以模式显示一些内容,就像苹果在iPad的地址簿中添加新联系人时所做的那样。我什么都试过了,但什么也没试过。我设法做到了,但当我试图将显示的视图控制器嵌入UINavigation控制器时,显示的控制器会覆盖整个屏幕。有什么建议吗?这是我的密码: UINavigationController*navController=[self.splitViewController.viewControllers

我在UISplitViewController的主视图控制器中有一个加号按钮,我想在我的详细视图中以模式显示一些内容,就像苹果在iPad的地址簿中添加新联系人时所做的那样。我什么都试过了,但什么也没试过。我设法做到了,但当我试图将显示的视图控制器嵌入UINavigation控制器时,显示的控制器会覆盖整个屏幕。有什么建议吗?这是我的密码:

UINavigationController*navController=[self.splitViewController.viewControllers lastObject]; DetailTableViewController*控制器=(DetailTableViewController*)navController.topViewController

controller.definesPresentationContext = YES;
controller.providesPresentationContextTransitionStyle = YES;

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
EditTableViewController *etvc = (EditTableViewController *)[storyboard instantiateViewControllerWithIdentifier:@"EditTableViewController"];

UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:etvc];
etvc.patient = patient;

if (IDIOM == IPAD)
{

    etvc.modalPresentationStyle = UIModalPresentationCurrentContext;
    [controller presentViewController:nav animated:YES completion:nil];

} else {
    [self presentViewController:nav animated:YES completion:nil];
}

我刚刚通过创建一个自定义segue成功地解决了这个问题,该segue的实现是:

- (void)perform
{
    UIViewController *ctrl = self.sourceViewController;
    UIViewController *dest = self.destinationViewController;

    dest.modalPresentationStyle = UIModalPresentationCurrentContext;
    [ctrl presentViewController:dest animated:YES completion:nil];
}
通过在我想要覆盖的模态视图上从我的细节视图控制器调用这个序列,我看到了我想要的行为

我认为您的代码将要失控的地方是:

etvc.modalPresentationStyle = UIModalPresentationCurrentContext;
我认为应该是:

nav.modalPresentationStyle = UIModalPresentationCurrentContext;
虽然我还没有测试过

请注意,苹果的文档建议在iPhone(或“水平紧凑型设备”)上忽略modalPresentationStyle,因此您的“is_IPAD”检查可能是多余的


希望这有帮助

我用与你的答案类似的方法解决了我的问题,不过还是要谢谢比尔!