从UISplitViewController主视图到详细视图进行模态演示

时间:2015-01-29 17:56:46

标签: ios8

我在UISplitViewController的主视图控制器中有一个加号按钮,我希望在我的详细视图中以模态方式呈现内容,就像苹果在iPad中的地址簿中添加新联系人一样。我尝试了一切,但没有尝试。我设法做到了但是当我试图将我呈现的视图控制器嵌入到UINavigation控制器中时,我呈现的控制器覆盖了整个屏幕。有什么建议?这是我的代码:

UINavigationController * navController = [self.splitViewController.viewControllers lastObject];     DetailTableViewController * controller =(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];
}

1 个答案:

答案 0 :(得分:0)

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

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

    dest.modalPresentationStyle = UIModalPresentationCurrentContext;
    [ctrl presentViewController:dest animated:YES completion:nil];
}

我正在通过我想要覆盖它的模态视图从我的详细视图控制器调用此segue来看到我想要的行为。

我认为你的代码在哪里乱码了:

etvc.modalPresentationStyle = UIModalPresentationCurrentContext;

我认为应该是:

nav.modalPresentationStyle = UIModalPresentationCurrentContext;

虽然我没有测试过。

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

希望这有帮助!