我在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];
}
答案 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”检查可能是多余的。
希望这有帮助!