使用3D Touch的浓缩视图

时间:2015-09-27 16:34:12

标签: ios swift segue 3dtouch

我刚刚将3D Touch的peek和pop功能实现到我的应用程序的表格视图中。我正在使用一个不同的,更精简的视图控制器来查看视图,我希望pop能够将用户带到视图的完整版本(与Instagram应用程序的风格类似)。

我想知道如何做到这一点?当我实例化窥视时,我无法看到如何在代码中执行此操作,因此我唯一能想到的是在弹出后立即切换到完整视图?

有人有什么想法吗?

修改

这就是我所说的那种系统:

enter image description here

2 个答案:

答案 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];

    }
}

您可以在界面构建器中设置故事板标识符:

enter image description here

如果您需要更多帮助,请告诉我,但我需要更多信息。

答案 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无效。