我刚刚将3D Touch的peek和pop功能实现到我的应用程序的表格视图中。我正在使用一个不同的,更精简的视图控制器来查看视图,我希望pop能够将用户带到视图的完整版本(与Instagram应用程序的风格类似)。
我想知道如何做到这一点?当我实例化窥视时,我无法看到如何在代码中执行此操作,因此我唯一能想到的是在弹出后立即切换到完整视图?
有人有什么想法吗?
修改
这就是我所说的那种系统:
答案 0 :(得分:2)
这对我有用。也许在- (void)previewingContext:
(id<UIViewControllerPreviewing>)previewingContext
commitViewController:(UIViewController *)viewControllerToCommit
中做一个条件语句,帮助您确定要进入的全屏以及它的显示方式。如果满足此条件语句,则使用UIViewController
实例化self.storyboard instantiateViewControllerWithIdentifier....
,然后按下它。以下是我的例子:
- (void)previewingContext(id<UIViewControllerPreviewing>)previewingContext
commitViewController:(UIViewController *)viewControllerToCommit {
//this check is only for demonstration purposes
if (viewControllerToCommit) {
FullViewController * fullVC = [self.storyboard instantiateViewControllerWithIdentifier:@"fullVC"];
[self.navigationController pushViewController:exp animated:YES];
}
}
您可以在界面构建器中设置故事板标识符:
如果您需要更多帮助,请告诉我,但我需要更多信息。
答案 1 :(得分:0)
我想你回答了自己的问题。直接瞄准全景。您不一定要在pop上显示viewControllerToCommit
。您可以仅使用该精简viewController参考来确定要传递到完整视图的内容。例如,如果它是详细视图,则在精简视图中传递对象,从中导出细节。
-(void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
{
SomeClass *detailObj = viewControllerToCommit.detailObject;
DetailVCClass *detailViewControllerFull = [[DetailVCClass alloc] initWithObject:detailObj];
// Present the full VC
[self presentViewController:detailViewControllerFull animated:YES completion:nil];
// Alternatively, using Nav controller, you might pop onto the stack
[self.navigationController pushViewController:detailViewControllerFull animated:YES];
}
当然,您正在使用故事板,因此您可以相应地进行调整。
关键是,只是因为它们为您提供了您在窥视时所呈现的精简视图的引用,并不意味着这是您必须弹出的视图。他们将其命名为viewControllerToCommit
无效。